Sormadan önce app.router
, en azından ara katman yazılımı ile çalışırken ne düşündüğümü açıklamam gerektiğini düşünüyorum. Ara katman yazılımı kullanmak için kullanılacak işlev app.use()
. Ara katman yazılımı yürütülürken, ya bir sonraki ara katman yazılımını kullanarak next()
çağrılır ya da artık ara katman yazılımı çağrılmaz. Bu, bazı ara katman yazılımları diğer ara katman yazılımlarına bağlı olduğu ve sonuna yakın bazı ara katman yazılımlarının çağrılmayabileceği için ara katman aramalarımı yerleştirdiğim sıralamanın önemli olduğu anlamına gelir.
Bugün uygulamam üzerinde çalışıyordum ve sunucum arka planda çalışıyordu. Bazı değişiklikler yapmak ve sayfamı yenilemek ve değişiklikleri hemen görmek istedim. Özellikle, düzenimde değişiklikler yapıyordum. Çalışmak için alamadım, bu yüzden cevap için Stack Overflow aradı ve bu soru bulundu . Altında olduğundan emin olmak express.static()
için söylüyor require('stylus')
. Ama bu OP koduna bakarken, app.router
ara katman yazılım çağrılarının sonunda çağrısını gördüm ve bunun neden olduğunu anlamaya çalıştım.
Benim Express.js uygulamasını (sürüm 3.0.0rc4) yaptığında, ben komutu kullanılır express app --sessions --css stylus
ve benim app.js dosya kod benim ile kurulum geldi app.router
yukarıda hem express.static()
ve require('stylus')
çağrılar. Öyle görünüyor ki, eğer zaten bu şekilde kurulursa, o şekilde kalmalıdır.
Stylus değişikliklerimi görebilmek için kodumu yeniden düzenledikten sonra şöyle görünüyor:
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');
});
Bu yüzden ilk adımın kodumda bile olmanın neden önemli olduğunu bulmak olduğuna karar verdim app.router
. Bu yüzden yorum yaptım, uygulamamı başlattım ve adresine gittim /
. Dizin sayfamı gayet iyi gösterdi. Hmm, belki de rotalarım dosyasından (route.index) yönlendirmeyi dışa aktardığım için işe yaradı. Sonra ilerledim /test
ve ekranda Test'i gösterdi. Haha, tamam, ne app.router
yapacağına dair hiçbir fikrim yok. Benim koduma dahil olsun ya da olmasın, benim yönlendirme gayet iyi. Bu yüzden kesinlikle bir şey eksik.
Benim sorum budur:
Birisi lütfen ne yaptığını app.router
, önemini ve ara katman yazılım çağrılarıma nereye koymam gerektiğini açıklayabilir mi? Hakkında kısa bir açıklama alırsam da iyi olur express.static()
. Anlayabildiğim kadarıyla, express.static()
bilgilerimin önbelleğidir ve uygulama istenen sayfayı bulamazsa, var olup olmadığını görmek için önbelleği kontrol edecektir.