深入了解koa原理
koa原理
⼀个基于nodejs的⼊⻔级http服务,类似下⾯代码:
js
1 | const http = require('http') |
koa的⽬标是⽤更简单化、流程化、模块化的⽅式实现回调部分
js
1 | // 创建 koa.js |
⽬前为⽌,Koa只是个⻢甲,要真正实现⽬标还需要引⼊上下⽂(context)和中间件机制
context
koa为了能够简化API,引⼊上下⽂context概念,将原始请求对象req和响应对象res封装并挂载到context上,并且在context上设置getter和setter,从⽽简化操作。
js
1 | // demo |
封装 context、request、response
js
1 | // request.js |
在koa.js中引入
js
1 | const http = require('http') |
中间件
Koa中间件机制:Koa中间件机制就是函数式 组合概念Compose的概念,将⼀组需要顺序执⾏的函数复合为⼀个函数,外层函数的参数实际是内层函数的返回值。洋葱圈模型可以形象表示这种机制,是源码中的精髓和难点。
异步中间件:我们要⽀持async + await的中间件,要等异步结束后,再执⾏下⼀个中间件。
js
1 | function compose(middlewares){ |
router
routes()的返回值是⼀个中间件,由于需要⽤到method,所以需要挂载method到ctx之上,修改request.js
实现方式请移步github—->write_koa