目前两者之间存在差异
app.use(function(req,res,next){
});
和
router.use('/some_route', function(req,res,next){
});
。不同之处在于,app.use
针对每个请求运行,而router.use
仅针对匹配的路由运行。
我的问题是关于必须位于应用程序下方的路由器。 当然,应用程序内部有一些默认路由器。有没有办法访问该路由器...应用程序路由器?我以为这被弃用了?
其次,我真正正在寻找的是一种访问当前正在使用的路由器的方法。
例如
app.use(function(req,res,next){
var currentRouter = req.app._router // (?)
});
或
router.use(function(req,res,next){
var currentRouter = req._router //(?)
});
其中req._router等于路由器的同一路由器。当然使用调用。
在最新的 Express 代码中,默认应用路由器位于 app._router
中。
它是延迟创建的,这意味着在实际定义路由(使用 app.use()
或 app.get()
或类似的东西)之前不会创建它。
这似乎不是公共财产,因此可能会发生变化。 当然,您可以使用根路径定义自己的路由器,并且仅使用自己的路由器,然后就不必访问或使用此非公共属性。
您是正确的,app.router
已被弃用。 尝试访问它故意在 Express 代码中引发异常。