历史
- 2010.6 TJ开始编写Express
- 2014年发展到v0.12,移交StrongLoop
- 2013.8 TJ开始编写koa
- 2015.8 koa 发布v1.0.0
- Node.js
- 2013.3 Node.js v0.10
- 2014.12 io.js不满Node.js管理,发起分裂
- 2015.2 Node.js v0.12 发布
- 2015.9 Node.js与io.js合并发布为v4.0
Koa的洋葱模型
- 对比Express:Express是线性的
-
Koa模型
//获取请求的时间
app.use(async (ctx, next) => {
const start = Date.now();
await next();
const ms = Date.now() - start;
console.log(`${ctx.method} ${ctx.url} - ${ms}ms`);
});
express实现类似的U型模型
- setHead不会出发writeHead
- writeHead是
end()
的时候触发
- 只有在手动提前调用
writeHead()
,才统计不到写body的时间 # app.xxx
app.use(fn)
app.on('error',fn)
app.emit
ctx.xxx
- ctx means context
- ctx.req //Node封装的请求
- ctx.res
- ctx.request //Koa封装的请求
- ctx.response
- ctx.state //跨中间件分享数据
- ctx.app
- ctx.cookies.get/set
- ctx.throw
- ctx.assert
- ctx.respond // not recommand
网友评论