组合中间件
在Koa中如果要组合一组中间件,可以使用koa-compose模块(顺便说下,Koa核心中间件模型就是由koa-compose和co驱动的)
例子:
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++模块
 (注:当前该模块的nan还没升级到最新1.0.0,v0.11.13下编译会失败;手动把nan升级到1.0.0,测试通过)
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
— END
KOA ON THE ROAD.
 
       
    