Koa与Express

历史

  • express
  1. 2010.6 TJ开始编写Express
  2. 2014年发展到v0.12,移交StrongLoop
  • Koa
  1. 2013.8 TJ开始编写koa
  2. 2015.8 koa 发布v1.0.0
  • Node.js
    1. 2013.3 Node.js v0.10
    2. 2014.12 io.js不满Node.js管理,发起分裂
    3. 2015.2 Node.js v0.12 发布
    4. 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

你可能感兴趣的:(Koa与Express)