react+koa+mongodb+redis 我的技术博客(github地址),求star,求fork,你们一块儿学习
说明:
改动基本介绍,相关代码会贴出来并主要说一下:
项目结构介绍,只涉及后端,前端基本没啥改动,不懂得能够看下我借鉴的项目
api接口整理
前端
前端后台评论管理功能
- 这里跟别的文章管理没什么区别,主要的问题就在于columns这个数组对象须要放在组件里,不然没法获取this对象以及对应的props,另外antd库,在使用
switch组件的时候defaultChecked在面对Pagination换页时会出现状态没法更改,仍是显示上一页的状态,这里须要使用checked属性,具体代码以及说明
前端第三方github登陆功能
- github第三方登陆在react上这种单页面实现的时候,会出现跨域问题,这里的话有两种解决办法,具体代码以及解决办法
前端文章评论功能
- 这块是经过我上文所借鉴项目里的教程开发的,样式的话是采用github的issue结构,具体代码位于blog/app/containers/comment文件夹里,这里就不细说了,惟一须要注意的就是在评论或者点赞的时候须要更新react state
后端
后端框架修改
- 将框架由express改为了koa2,具体的中间件的话能够查看blog/server/api/apiServer.js
token+session功能
- 在后台中间件这里新增了token中间件(检测token)跟admin中间件(检测是否为admin),这里token中间件的处理流程是先检测请求路径是否须要验证token,若是须要则检测其请求头上的authorization字段,知足的话进入路由,而且在结束后在其响应头上将token值添加到Authorization字段,这里若是先后端采用不一样的端口会产生跨域问题,具体代码以及解决方案
后端数据库字段更改跟表添加
- 这里就一些表字段更改就表添加,惟一须要注意的是mongoose.model这个方法在表名没有s的时候会自动加上,另外使用了mongodb的aggregate,pipeline等,具体代码以及方案
单元测试以及代码检查
- 单元测试这里用的是jest,缘由的话主要因为它内嵌了断言等,而且支持react,代码位于blog/test文件夹,目前只写了登陆的测试接口,后面有时间再加上,代码检查的话采用的是eslint库,extends standard,后面加了一些本身的规则
log模块
- 这里在网上其实有别的方式来定义一个全局的错误变量,可是很惋惜的是在es5里已经再也不支持,这里我采用的是定义一个全局函数,当调用它的时候会产生一个错误,再经过正则来获取所在的代码行号跟文件信息,具体代码
环境
react @16.3.1
react-router @4.2.0
node @8.9.1
mongodb @4.0.2
webpack @4.4.1
运行
git clone https://github.com/oyosc/blogreact
npm installwebpack
npm run start-prodgit
独立打包
npm run build程序员
pm2方式启动
npm install pm2 -ggithub
pm2 -i max start npm -- run start-prod-debug(这里的命令能够查看package.json文件)web
开发数据库文件
地址:
blog_db
从零开始搭建项目
感兴趣的请移步个人博客redis
TODO
more
- 因为一直是作后端程序员,因此搞起前端来感受很麻烦,有问题什么的请提issue,有时间的话会回答的,最后欢迎star,欢迎fork,你们一块儿学习