我有一个相当奇怪的用例;我的Web应用程序有两个URL来源。一个是一组自定义URL,其分析在很大程度上依赖于一个庞大而有些神秘的遗留应用程序;另一个是应用程序的新管理层,我的团队可以自由地创建我们想要的任何内容。有一个明确定义的“根”URL列表,因此我们可以安全地为新的管理页面分配URL。
Express.JS中是否可以有两个路由器?我见过人们将他们自己的路由器注入到Express.JS中,但是Express的源代码似乎与Route.js以及各种明确的“方法”阻塞有着深刻的联系。我希望能够用他们奇怪的规则扫描一组路线,如果没有匹配那么检查更常规(快递)路线组?
答案 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')));
}