中间件级联

Koa是中间件通过一种更加传统(您也许会很熟悉)的方式进行级联, 摒弃了以往node频繁的回调函数造成的复杂代码逻辑。我们通过generators来实现“真正”的中间件。
Connect简单 地将控制权交给一系列函数来处理,直到函数返回。与之不同,当执行yield next 语句时,Koa暂停了该中间件,继续执行下一个符合请求的中间件,然后控制权再逐级返回给上层中间件。

下面的例子页面返回“Hello World",然而当请求开始时, 请求经过x-response-time和logging中间件,并记录中间件执行起始时间。然后将控制权交给response中间件。当中间件运行到yield next时,函数扶起并将控制权交给下一个中间件。当没有中间件执行yield next时, 程序栈会逆序唤起被挂起的中间件来执行接下来的代码。

var koa = require('koa');
var app = koa();

// x-response-time

app.use(function *(next){
  var start = new Date;
  yield next;
  var ms = new Date - start;
  this.set('X-Response-Time', ms + 'ms');
});

// logger

app.use(function *(next){
  var start = new Date;
  yield next;
  var ms = new Date - start;
  console.log('%s %s - %s', this.method, this.url, ms);
});

// response

app.use(function *(){
  this.body = 'Hello World';
});

app.listen(3000);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.简书 koa是由Express原班人马打造,致力于成为一个更小、更富有表现力、更健壮的Web框架。使用koa编...
    不去解释阅读 2,868评论 0 11
  • 前言 原文地址 最近几天花了比较长的时间在koa(1)的源码分析上面,初次看的时候,�被中间件执行那段整的晕乎乎的...
    谦龙阅读 1,677评论 0 9
  • koa2 是由express原班人马打造的新一代web后端框架,相比express koa2更轻,代码也更优雅摆脱...
    贱贱贱贱贱阅读 17,613评论 1 8
  • 前几日,在网易云上听见一首曲子,作者为一位癌晚期粉丝写的,以作对粉丝求生的鼓励。 还记得,全曲无词,仅有一句介...
    能见未来阅读 376评论 0 2
  • 文/熠歆 只愿有个好结果! 早安,全世界! 周二 晴 贵州普安
    熠歆阅读 259评论 2 1

友情链接更多精彩内容