Express中的app路由器

时间:2016-02-08 05:22:16

标签: node.js express

目前

之间存在差异
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调用的同一路由器。

1 个答案:

答案 0 :(得分:1)

latest Express code中,默认应用路由器位于app._router

它是懒惰创建的,这意味着在实际定义路线之前不会创建它(使用app.use()app.get()或类似的东西。)

这似乎不是一个公共财产,因此可能会发生变化。当然,您可以使用根路径定义自己的路由器,只使用自己的路由器,然后您就不必访问或使用此非公共属性。

您不推荐使用app.router。试图有意地访问它会在Express代码中引发异常。