第十章使用Koa2重新构建博客项目
10-1、开始
- express中间件是异步回调,koa2原生支持async/await
- 新开发的框架基于koa2,比如阿里的egg.js
- express 虽然未过时,但是koa2肯定是未来趋势
async await
- await后面可以追加promise对象
- await必须包裹在async函数里面
- async 函数执行,返回的还是一个promise对象
- 用try catch截获promise中reject的值
10-2、介绍koa2
- 安装(使用脚手架)
cnpm install koa-generator -g
koa2 blog-koa2
cnpm install
cnpm i cross-env --save-dev
设置环境参数cnpm run dev
- 初始化代码处理路由
10-3、介绍路由
- 在routes中配置路由,在app.js中引入
10-4、介绍中间件
-
有很多app.use
-
代码中的next参数是什么?
-
app.use去注册中间件
-
中间件的格式都是async的格式
-
next往下执行
-
next都是返回一个promise格式
-
await一个promise
10-5、实现session
- 实现登录(session)
- 开发路由
- 记录日志
- 基于koa-generic和koa-redis
cnpm i koa-generic-session koa-redis redis --save
- 在app.js中做sessin的配置
10-6、开发路由之准备工作
- 复用之前的代码,如Mysql、登录中间件、controller、model
- 初始化路由、并开发接口
- 联调测试
cnpm i mysql xss --save
- 包括复用之前的数据库连接,复用sql连接node,并修改为async await语法
- 复用中间件、复用密码加密、复用REDIS_CONF
10-7、开发路由之代码演示
复用express中的blog路由和user路由,并且修改为async await形式的
10-8、开发路由之联调
使用nginx和前端联调
10-9、开发路由之日志
- access log记录,使用morgan
- 自定义日志使用console.log和console.error
- 日志文件拆分,日志内存分析
- koa-logger的意义是使得在开发环境中get、post请求打印的更加好看
- 使得morgan可以使用在koa2这个环境中
cnpm i koa-morgan --save
- 线上环境路由写在文件中,开发环境路由写在控制台中
10-9、中间件原理分析
- 回顾中间件的使用
- 分析如何实现
- 代码演示
- 用官网中的例子
mkdir koa2-test
cnpm init -y
cnpm i koa --save
- app.use用来注册中间件
- 实现next机制,即用上一个next触发下一个
- 不涉及method和path的判断
10-10、中间件用js模拟实现
- 组合中间件
- 不涉及method和url
- use注册
- ctx实现
总结:
- 使用async 和await的好处,代码简洁
- koa2的使用,操作session、redis、日志
- 中间件的使用和原理