koa-router源码疑惑
发布于 6 年前 作者 qichangjun 2838 次浏览 来自 问答

屏幕快照 2017-12-05 上午11.02.47.png 这里定义了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.jscompose遍历执行所有中间件时,为什么没有执行dispatch这个函数,而是在访问到对应的路由时,才会调用对应的dispatch?

4 回复

dispatch是对外暴漏的中间件啊

@i5ting 问题是我添加了三个dispatch中间件,为什么middleware里只有一个dispatch?,不应该是发现路由不匹配时调用next()继续去下一个dispatch中匹配嘛?

@qichangjun 你没看明白xx.routes的用法吧,再看用法

@i5ting 稍微明白点了,确实middleware中会有三个dispatch,只是在匹配到正确的之后的dispatch就不会再执行了

回到顶部