當我創建使用快速二進制樣本Express應用程序,引導代碼有幾行:在Express中,app.router究竟做了什麼?
...
var app = express();
...
app.use(app.router);
我沒有找到很多關於app.router。我認爲這是處理路由(app.get(),app.post()等)規則的中間件,但是當我移除app.use(app.router)時,這些規則也會被執行。線。
那麼這個中間件的確切含義是什麼?
當我創建使用快速二進制樣本Express應用程序,引導代碼有幾行:在Express中,app.router究竟做了什麼?
...
var app = express();
...
app.use(app.router);
我沒有找到很多關於app.router。我認爲這是處理路由(app.get(),app.post()等)規則的中間件,但是當我移除app.use(app.router)時,這些規則也會被執行。線。
那麼這個中間件的確切含義是什麼?
這是從快車2.x的導向http://expressjs.com/2x/guide.html
「注意使用app.router的,這可以(任選地)用於安裝 應用路由,否則到應用程序中的第一個呼叫。 get(), app.post()等將安裝路由。「
我懷疑這也適用於Express 3.x。
在Express 3.x中,app.router是connect middleware router的增強版。赫克託說,這是爲快速處理與app.get
,app.post
註冊請求處理程序等
如果你不叫app.use(app.router)
明確表示隨後會調用它隱含的第一次使用app.get(...)
,app.post(...)
等。但是,你可能需要明確地指定.use
,因爲那樣你就選擇了所有中間件的順序。
app.use(express.favicon());
app.use(express.bodyParser());
app.use(express.methodOverride());
// app.get, app.post, etc called before static folder
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
看看如何在Express 3源here檢索路由器。
我明白爲什麼@Zsombor接受了另一個答案,這是他提出問題時唯一的答案,但是這個答案要好得多,因爲它突出顯示了您希望顯式調用app.router的主要原因,即控制訂單安裝。 –
這種方法已經不再被
爲什麼我們使用路由器..because的,我們需要我們的子應用程序連接到我們的主要的應用程序。
如果你沒有明確定義它,express會在遇到app.verb時爲你做。 – Pickels
很好的答案在這裏http://stackoverflow.com/questions/12695591/node-js-express-js-how-does-app-router-work – IvanM
截至表4,app.use(app.router)被刪除。請參閱文檔https://github.com/visionmedia/express/wiki/New-features-in-4.x –