Zanim zapytam o app.router
, myślę, że powinienem przynajmniej wyjaśnić, co myślę, co dzieje się podczas pracy z oprogramowaniem pośrednim. Aby użyć oprogramowania pośredniego, należy użyć tej funkcji app.use()
. Podczas wykonywania oprogramowania pośredniego wywoła następne oprogramowanie pośrednie za pomocą next()
lub sprawi, że nie będzie już wywoływane. 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 aplikacją i mój serwer działał w tle. Chciałem wprowadzić pewne zmiany, odświeżyć stronę i od razu je zobaczyć. W szczególności wprowadzałem zmiany w moim układzie. Nie mogłem go uruchomić, więc szukałem odpowiedzi na Przepełnienie stosu i znalazłem to pytanie . Mówi, aby upewnić się, że express.static()
jest poniżej require('stylus')
. Ale kiedy patrzyłem na kod tego OP, zobaczyłem, że miał swoje app.router
połączenie na samym końcu swoich wywołań oprogramowania pośredniego i próbowałem dowiedzieć się, dlaczego tak się dzieje.
Kiedy utworzyłem aplikację Express.js (wersja 3.0.0rc4), użyłem polecenia, express app --sessions --css stylus
aw moim pliku app.js kod został dostarczony wraz z moimi app.router
powyższymi wywołaniami express.static()
i require('stylus')
. Wygląda więc na to, że jeśli tak już jest, to tak powinno pozostać.
Po zmianie aranżacji kodu, aby zobaczyć zmiany w rysiku, 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');
});
Zdecydowałem więc, że pierwszym krokiem będzie ustalenie, dlaczego tak ważne jest, aby mieć nawet app.router
mój kod. Skomentowałem to, uruchomiłem aplikację i nawigowałem do /
. Moja strona indeksu wyświetlała się dobrze. Hmm, może zadziałało, ponieważ eksportowałem routing z mojego pliku tras (route.index). Następnie nawigowałem /test
i wyświetliłem Test na ekranie. Haha, OK, nie mam pojęcia co app.router
robi. Niezależnie od tego, czy jest to zawarte w moim kodzie, czy nie, moje routing jest w porządku. Więc zdecydowanie czegoś mi brakuje.
Oto moje pytanie:
Czy ktoś mógłby wyjaśnić, co to app.router
znaczy, jak ważne jest to miejsce i gdzie powinienem to umieścić w wywołaniach oprogramowania pośredniego? Byłoby również miło, gdybym otrzymał krótkie wyjaśnienie na temat express.static()
. O ile mogę stwierdzić, express.static()
jest to pamięć podręczna moich informacji, a jeśli aplikacja nie może znaleźć żądanej strony, sprawdzi pamięć podręczną, aby sprawdzić, czy istnieje.