2012-11-06 21 views
27

Kiedy utworzyć przykładową aplikację Express, korzystając z ekspresowego binarny, kod bootstrap ma następujące linie:W programie Express, co dokładnie robi app.router?

... 

var app = express(); 
... 
app.use(app.router); 

nie znalazłem wiele o app.router. Myślałem, że jest to oprogramowanie pośrednie, które obsługuje reguły routingu (app.get(), app.post() itp.), Ale reguły te są również wykonywane po usunięciu app.use (app.router); linia.

Co to jest dokładnym celem tego oprogramowania pośredniego?

+1

Jeśli nie zdefiniujesz tego wyraźnie, funkcja Express zrobi to za Ciebie, gdy napotka app.verb. – Pickels

+0

Dobra odpowiedź tutaj http://stackoverflow.com/questions/12695591/node-js-express-js-how-does-app-router-work – IvanM

+2

as of express 4, app.use (app.router) został usunięty. zapoznaj się z dokumentami https://github.com/visionmedia/express/wiki/New-features-in-4.x –

Odpowiedz

15

To z 2.x prowadnicy Express, http://expressjs.com/2x/guide.html

„Uwaga zastosowanie app.router, który może (opcjonalnie) być stosowany do montażu trasy zastosowań, w przeciwnym przypadku wywołanie pierwszej aplikacji. get(), app.post() itp. zamontuje trasy. "

Podejrzewam, że dotyczy to również Express 3.x.

36

W Express 3.x app.router jest rozszerzoną wersją connect middleware router. Jak powiedział Hector, to były ekspresowe obsługuje programy obsługi żądań zarejestrowani app.get, app.post itp

Jeśli nie zadzwonić app.use(app.router) następnie jawnie wyrażać będzie to nazwać niejawnie przy pierwszym użyciu app.get(...), app.post(...) itd jednak możesz to wyraźnie zrobić, ponieważ wtedy wybierasz kolejność wszystkich programów pośredniczących.

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

Zobacz, jak router jest pobierany ze źródła Express 3 here.

Należy pamiętać, że Express 4 doesn't need app.router.

+4

Rozumiem, dlaczego @Zsborbor przyjął inną odpowiedź, która była jedyną w pobliżu jego pytania, ale ta odpowiedź jest o wiele lepsza, ponieważ podkreśla główny powód, dla którego chcesz bezpośrednio wywołać app.router, czyli kontrolować instalację zamówienia. –

0

Metoda ta została zaniechana

dlaczego używamy routera ..because od musimy połączyć naszą aplikację sub do naszego głównego aplikacji.

Powiązane problemy