目前
之间存在差异app.use(function(req,res,next){
});
和
router.use('/some_route', function(req,res,next){
});
......区别在于app.use
针对每个请求运行,而router.use
仅针对匹配路由运行。
我的问题是关于必须位于应用程序下方的路由器。当然应用程序内部有一些默认路由器。有没有办法访问该路由器... app.router?我以为这已被弃用?
其次,我真正想要的是一种访问当前使用的路由器的方法。
例如,
app.use(function(req,res,next){
var currentRouter = req.app._router // (?)
});
或
router.use(function(req,res,next){
var currentRouter = req._router //(?)
});
其中req._router将等于router.use调用的同一路由器。
答案 0 :(得分:1)
在latest Express code中,默认应用路由器位于app._router
。
它是懒惰创建的,这意味着在实际定义路线之前不会创建它(使用app.use()
或app.get()
或类似的东西。)
这似乎不是一个公共财产,因此可能会发生变化。当然,您可以使用根路径定义自己的路由器,只使用自己的路由器,然后您就不必访问或使用此非公共属性。
您不推荐使用app.router
。试图有意地访问它会在Express代码中引发异常。