Node.js 意思:我可以在app.use()中注册多个迷你路由器应用吗?

Node.js 意思:我可以在app.use()中注册多个迷你路由器应用吗?,node.js,angular,express,router,Node.js,Angular,Express,Router,在我的node/express app.js主文件中,我创建了一个迷你应用路由器: var router = express.Router(); 我将内部传递给我的控制器函数并再次导出,最后在中注册路由器 app.use('/Link', router); 现在,我想为我的Angular NGX图表设置第二个控制器文件夹,其中包含额外的控制器功能和路由,在这里,我从mongoDB以正确的格式准备数据。因此,我想创建第二个路由器对象,在其中传递并注册该路由器对象的正确路由和中间件 我现在的问题

在我的node/express app.js主文件中,我创建了一个迷你应用路由器:

var router = express.Router();
我将内部传递给我的控制器函数并再次导出,最后在中注册路由器

app.use('/Link', router);
现在,我想为我的Angular NGX图表设置第二个控制器文件夹,其中包含额外的控制器功能和路由,在这里,我从mongoDB以正确的格式准备数据。因此,我想创建第二个路由器对象,在其中传递并注册该路由器对象的正确路由和中间件

我现在的问题是,我可以为我的express实例创建并注册多个路由器对象吗,比如
app。使用('/Link',router1,router2,router3,…)

它的行为是否与一个路由器对象相同(我的意思是,它是否会根据我在浏览器中导航到的路由找到合适的路由器并执行正确的中间件)?

当然,您可以这样做。常见的用例是密码保护、生成身份验证令牌、解析有效负载等

app.use
在第一个参数后接受任意数量的“中间件”

查看文档以了解更多详细信息:

参数是相当灵活的,对于您可以传递的内容,有许多选项

  • 中间件功能
  • 一系列中间件功能(用逗号分隔)
  • 一系列中间件功能
  • 以上所有因素的组合
每个函数都有3个参数,分别是请求、响应和下一个回调函数。下面是一个内联中间件的示例,它记录一些内容并转发给下一个处理程序

app.use('/secret-stuff', authorize, (req, res, next) => {
    console.log('token from auth middleware', req.authToken)
    next()
}, render)
需要注意的一点是,您只能发送一个响应,因此只有最终的处理程序才会将响应发送给用户。在此之前的所有操作都应该调用
next()
,以激活链中的下一个中间件

当路径不匹配时,只要确保转发(调用
next()
),就可以通过许多路由器。您需要使用某种路径模式,以允许中间件路由器处理路径中更大的特定性(例如,“/Link/*”),否则您将无法在中间件路由器中定义任何子路径处理程序


在过去,我不需要子路由器。中间件可以很好地进行模块化。

不,您不能这样做。你不太可能真的需要
应用程序。使用('/Link',router1,router2,router3,…)
。现在还不清楚你想要实现什么。嗨,还有一个问题,我可以在不同的应用程序路径上注册我的路由器吗?e、 g应用程序使用('/link1',router1);应用程序使用(“链接2”,路由2);等