Node.js / Express.js - Jak działa app.router?

Zanim zapytam oapp.router Myślę, że powinienem wyjaśnić przynajmniej to, co myślę, że dzieje się podczas pracy z oprogramowaniem pośrednim. Aby użyć oprogramowania pośredniego, należy użyć funkcjiapp.use(). Gdy oprogramowanie pośrednie jest wykonywane, albo wywoła następne oprogramowanie pośrednie, używającnext() lub spraw, aby nie było wywoływane żadne oprogramowanie pośrednie. Oznacza to, że kolejność, w jakiej umieszczam wywołania oprogramowania pośredniego, jest ważna, ponieważ niektóre oprogramowanie pośrednie zależy od innego oprogramowania pośredniego, a niektóre oprogramowanie pośrednie pod koniec może nawet nie zostać wywołane.

Dzisiaj pracowałem nad swoją aplikacją i uruchomiłem serwer w tle. Chciałem dokonać pewnych zmian i odświeżyć stronę i natychmiast zobaczyć zmiany. W szczególności wprowadzałem zmiany w moim układzie. Nie mogłem go zmusić do działania, więc szukałem odpowiedzi na Przepełnienie stosu i znalazłemto pytanie. Mówi, żeby się upewnićexpress.static() jest poniżejrequire('stylus'). Ale kiedy patrzyłem na kod tego OP, zobaczyłem, że ma jegoapp.router zadzwonić na samym końcu swoich rozmów z oprogramowaniem pośrednim i próbowałem dowiedzieć się, dlaczego tak było.

Kiedy stworzyłem aplikację Express.js (wersja 3.0.0rc4), użyłem poleceniaexpress app --sessions --css stylus w moim pliku app.js kod został skonfigurowany za pomocą mojegoapp.router powyżej obuexpress.static() irequire('stylus') połączenia. Wygląda na to, że jeśli jest już tak skonfigurowany, to powinien pozostać w ten sposób.

Po ponownym rozmieszczeniu mojego kodu, aby zobaczyć zmiany rysika, wygląda to tak:

app.configure(function(){
  //app.set() calls
  //app.use() calls
  //...
  app.use(app.router);
  app.use(require('stylus').middleware(__dirname + '/public'));
  app.use(express.static(__dirname + '/public', {maxAge: 31557600000}));
});

app.get('/', routes.index);

app.get('/test', function(req, res){
  res.send('Test');
});

Postanowiłem więc, że pierwszym krokiem będzie ustalenie, dlaczego tak ważne jest nawet posiadanieapp.router w moim kodzie. Skomentowałem to, uruchomiłem aplikację i nawigowałem do/. Wyświetliła się moja strona indeksu. Hmm, może to zadziałało, ponieważ eksportowałem routing z mojego pliku routingu (routes.index). Więc dalej nawigowałem do/test i wyświetlił Test na ekranie. Haha, OK, nie mam pojęcia coapp.router robi. Niezależnie od tego, czy jest dołączony do mojego kodu, czy nie, mój routing jest w porządku. Więc zdecydowanie czegoś mi brakuje.

Oto moje pytanie:

Czy ktoś mógłby wyjaśnić coapp.router czy ma to znaczenie i gdzie powinienem umieścić je w moich wywołaniach oprogramowania pośredniego? Byłoby również miło, gdybym miał krótkie wyjaśnienie na ten tematexpress.static(). O ile wiem,express.static() jest pamięcią podręczną moich informacji i jeśli aplikacja nie może znaleźć żądanej strony, sprawdzi pamięć podręczną, czy istnieje.