Kiedy tworzę przykładową aplikację Express przy użyciu binarnego wyrażenia, kod bootstrap ma następujące linie:
...
var app = express();
...
app.use(app.router);
Nie znalazłem wiele informacji 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.
Jakie jest dokładne przeznaczenie tego oprogramowania pośredniczącego?
Odpowiedzi:
15 dla odpowiedzi № 1To jest z przewodnika Express 2.x. http://expressjs.com/2x/guide.html
"Zwróć uwagę na użycie app.routera, który można (opcjonalnie) wykorzystać do zamontowania trasy aplikacji, w przeciwnym razie pierwsze wywołanie app.get (), app.post (), itp. zamontuje trasy. "
Podejrzewam, że dotyczy to również Express 3.x.
36 dla odpowiedzi nr 2
W Express 3.x app.router jest rozszerzoną wersją podłącz router pośredni. Jak powiedział hector, to właśnie Express obsługuje obsługę zapytań zarejestrowanych przy pomocy app.get
, app.post
itp.
Jeśli nie zadzwonisz app.use(app.router)
jawnie, a następnie express, wywoła to pośrednio przy pierwszym użyciu app.get(...)
, app.post(...)
itp. Jednak możesz chcieć .use
jawnie, 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 tutaj.
Zauważ, że Express 4 nie wymaga aplikacji.
0 dla odpowiedzi № 3
Ta metoda została uznana za przestarzałą
dlaczego używamy routera ... ponieważ musimy podłączyć naszą aplikację podrzędną do naszej głównej aplikacji.