谁在用Koa
egg.js
其他的node.js框架
查看后端框架排名
Next.js/Nuxt.js/Nest.js
koa的发展
koa出现的时间节点比较尴尬,koa的出现刚好碰上了node.js和io.js闹分裂,但是koa采取了更激进的方案
koa对比express
中间件对比’
- express的中间件是
线型
的 - koa的中间件是
U型
的
语言特性对比
- express使用的是回调函数 next()
- koa v1.x使用的是generator语法
- koav2.x使用的是async/await语法
API对比
- 同样封装了请求和响应几乎一样
2011~2016express是更好的选择
2017以后koa是更好的选择
koa的中间件模型
express线型
中间件模型
KoaU型
中间件模型
示例
:在函数里,先执行next上面的代码,再执行下一个函数next上面的代码,然后再依次往返执行next下面的代码
await next() 解析
- next()表示进入下一个函数
- 下一个函数会返回一个Promise对象
- 下一个函数所有代码执行完毕后返回成功
- await会等待成功,再回头执行剩余的代码
只要使用了async就会给await返回一个Promise对象
— — 源码应该是用递归实现
U型中间件好在哪
实现response time
只需要在最开始的函数里的await next下将时间打印出来
Koa的API
- app.xxx
- ctx.xxx
- ctx.request
- ctx.response.xxx