koa-router源码疑惑
这里定义了router的中间件,api.routes()
实际返回的是dispatch
函数
Router.prototype.routes = Router.prototype.middleware = function () {
var router = this;
var dispatch = function dispatch(ctx, next) {...}
dispatch.router = this;
return dispatch;
}
那在koa的application.js
中compose
遍历执行所有中间件时,为什么没有执行dispatch
这个函数,而是在访问到对应的路由时,才会调用对应的dispatch
?
4 回复
dispatch是对外暴漏的中间件啊
@i5ting 问题是我添加了三个dispatch中间件,为什么middleware里只有一个dispatch?,不应该是发现路由不匹配时调用next()
继续去下一个dispatch中匹配嘛?
@qichangjun 你没看明白xx.routes的用法吧,再看用法
@i5ting 稍微明白点了,确实middleware中会有三个dispatch
,只是在匹配到正确的之后的dispatch
就不会再执行了