express.js的多个路由器?

时间:2013-04-29 21:24:38

标签: node.js express

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

Express.JS中是否可以有两个路由器?我见过人们将他们自己的路由器注入到Express.JS中,但是Express的源代码似乎与Route.js以及各种明确的“方法”阻塞有着深刻的联系。我希望能够用他们奇怪的规则扫描一组路线,如果没有匹配那么检查更常规(快递)路线组?

2 个答案:

答案 0 :(得分: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
});

答案 1 :(得分: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')));
}