2013-04-29 102 views
0

我有一個相當奇怪的用例;我的網絡應用程序有兩個URL來源。一個是一組自定義URL,其分析嚴重依賴於一個龐大而有點遺漏的遺留應用程序;另一個是應用程序的新管理層,我的團隊可以隨意創建任何我們想要的東西。有一個明確定義的「根」URL列表,所以我們可以安全地爲新的管理頁面分配URL。express.js的多個路由器?

是否有可能有路由器Express.JS?我見過人們注入自己的路由器到Express.JS,但源代碼快遞似乎深深執着於Route.js和各種明確「辦法」塊。我希望能夠掃描一組與他們的怪異規定的路線,如果沒有設置路由的比賽然後檢查更多的程序(用於快遞)?

回答

1

當然可以。編寫處理舊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

你可以通過將傳統的路由器在中間件快遞路由器之前做到這一點。

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'))); 
}