美文网首页
koa学习笔记

koa学习笔记

作者: 大饼脸me | 来源:发表于2017-09-26 14:24 被阅读16次

    一、中间件
    1、中间件的执行流程

    var koa = require('koa');
    var app = koa();
    
    // x-response-time
    app.use(function *(next){
      // (1) 进入路由
      var start = new Date;
      yield next;
      // (5) 再次进入 x-response-time 中间件,记录2次通过此中间件「穿越」的时间
      var ms = new Date - start;
      this.set('X-Response-Time', ms + 'ms');
      // (6) 返回 this.body
    });
    
    // logger
    app.use(function *(next){
      // (2) 进入 logger 中间件
      var start = new Date;
      yield next;
      // (4) 再次进入 logger 中间件,记录2次通过此中间件「穿越」的时间
      var ms = new Date - start;
      console.log('%s %s - %s', this.method, this.url, ms);
    });
    
    // response
    app.use(function *(){
      // (3) 进入 response 中间件,没有捕获到下一个符合条件的中间件,传递到 upstream
      this.body = 'Hello World';
    });
    
    app.listen(3000);
    

    以上是koa1的写法,koa2的写法有些不同,function * 写成 async function,yield写成await。

    app.use用来引用中间件,按顺序依次执行依次app.use中的代码,遇到 yield next,函数的执行权移交到下一个中间件,直到判断没有下一个yield next,之后逆序执行各个中间件的代码。

    相关文章

      网友评论

          本文标题:koa学习笔记

          本文链接:https://www.haomeiwen.com/subject/nvdosxtx.html