0

我有一个相当奇怪的用例;我的 Web 应用程序有两个 URL 来源。一个是一组自定义 URL,其分析在很大程度上依赖于大型且有些神秘的遗留应用程序;另一个是应用程序的新管理层,我的团队可以自由地创建我们想要的任何东西。有一个明确定义的“根”URL 列表,因此我们可以安全地为我们的新管理页面分配 URL。

Express.JS 中是否可以有两个路由器?我见过人们将自己的路由器注入 Express.JS,但 Express 的源代码似乎与 Route.js 和各种明确的“方法”块紧密相连。我希望能够用他们奇怪的规则扫描一组路由,如果没有匹配,那么检查更常规的(对于 Express)路由集?

4

2 回答 2

2

当然。编写您自己的处理遗留 URL 的中间件函数,并将其放在 Express 路由器之上。

app.use(function(req, res, next) {
    if (legacySystemHandles(req.url)) {
        // do legacy stuff
    }
    else next(); // pass to the next middleware function
});
app.use(app.router);

或者反过来:

app.use('/admin', app.router); // mounts the router to a specific path
app.use(function(req, res) {
    // do legacy stuff
});
于 2013-04-29T21:30:49.317 回答
1

您可以通过将遗留路由器放在中间件中的 Express 路由器之前来做到这一点。

app.configure(function(){
  app.use(express.bodyParser());
  app.use(legacy.router); // pseudo code
  app.use(app.router);
  app.use(express.static(path.join(__dirname, 'public')));
}
于 2013-04-29T21:29:52.413 回答