具有相同路由的NodeJS Express路由器?

时间:2017-06-22 10:32:52

标签: node.js express

我无法理解以下示例的工作原理:https://github.com/auth0-samples/auth0-nodejs-webapp-sample/tree/master/01-Login/routes

如果你看两个路由器,他们会暴露相同的路线' /'。当用户通过身份验证(抛出Auth0)时,' / callback'调用index.js路由器的路由,执行以下操作:

res.redirect('/user');

在app.js中宣布以下内容:

var user = require('./routes/user');    
app.use('/user', user);

,我知道将使用user.js路由器......但是在user.js中没有' / user'路线,但只有一个' /'。

有人可以解释一下' /'使用user.js路由器的路由?

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

虽然路由器user.js有' /' route,您正在' / user'中安装user.js路由。路径。所以路线' /'将被视为' / user /'。

app.use('/user', user);

如果你安装在其他路径上说

app.use('/user/sample/demo', user);

然后您的user.js路线为' / user / sample / demo /'。

希望您了解路由概念

答案 1 :(得分:0)

它们在主app.js文件

中使用时继承基本路径

lines 62 and 63上你会找到

app.use('/', routes);
app.use('/user', user);

这意味着:

  • routes返回的所有路由的基本路径均为/
  • user返回的所有路由的基本路径均为/user

它实际上是一个非常好的模式,可以在Express或甚至Koa中使用,以保持代码易于管理和更新。

您可以在express routing page上找到有关此模式的更多信息,最后一部分名为express.Router