给组合的中间件命名,In Koa

组合中间件

在Koa中如果要组合一组中间件,可以使用koa-compose模块(顺便说下,Koa核心中间件模型就是由koa-composeco驱动的)

例子:

app.use(compose([
  rt,
  response]));

为什么要给组合的中间件命名,利好?

如果我们开启DEBUG模式,

$ DEBUG=koa:* node --harmory app.js

我们是无法看出这个组合之后的中间件叫啥,如果中间件一多,不好跟踪,很疼
因为compose返回的是一个匿名的GeneratorFunction

如何命名?

列举下几种方式:

  • 包裹compose之后的中间件, 酒可以随意的给wapper命名了:

var fn = compose(...);function* name(next) {
   yield fn;
   yield next;}app.use(name);
  • 设置_name属性,因为在DEBUG模式下,会优先检查_name属性,具体请看https://github.com/koajs/koa/blob/master/lib/application.js#L98:

var fn = compose(...);fn._name = 'foo';
  • 使用第三方模块node-function-name,一个c++模块

var set = require('function-name');var fn = compose(...);set(fn, 'bar');console.log(fn.name);

完整例子 https://github.com/fundon/examples/tree/named-compose/named-compose

https://github.com/fundon/composedly

--- END
KOA ON THE ROAD.


你可能感兴趣的:(node,node.js,KOA)