Sebelum saya bertanya, app.router
saya pikir saya harus menjelaskan setidaknya apa yang saya pikir terjadi ketika bekerja dengan middleware. Untuk menggunakan middleware, fungsi yang digunakan adalah app.use()
. Ketika middleware dieksekusi, ia akan memanggil middleware berikutnya dengan menggunakan next()
atau membuatnya sehingga tidak ada lagi middleware yang dipanggil. Itu berarti bahwa urutan di mana saya melakukan panggilan middleware saya adalah penting, karena beberapa middleware tergantung pada middleware lain, dan beberapa middleware di bagian akhir bahkan mungkin tidak dipanggil.
Hari ini saya mengerjakan aplikasi saya dan menjalankan server saya di latar belakang. Saya ingin membuat beberapa perubahan dan menyegarkan halaman saya dan segera melihat perubahannya. Secara khusus, saya membuat perubahan pada tata letak saya. Saya tidak bisa membuatnya bekerja sehingga saya mencari Stack Overflow untuk jawabannya dan menemukan pertanyaan ini . Dikatakan untuk memastikan itu express.static()
ada di bawah require('stylus')
. Tetapi ketika saya melihat kode OP itu, saya melihat bahwa dia memiliki app.router
panggilannya di akhir panggilan middleware-nya, dan saya mencoba mencari tahu mengapa itu terjadi.
Ketika saya membuat aplikasi Express.js saya (versi 3.0.0rc4), saya menggunakan perintah express app --sessions --css stylus
dan dalam file app.js saya kode setup dengan app.router
kedua atas express.static()
dan require('stylus')
panggilan saya. Jadi sepertinya, jika sudah diatur seperti itu, maka harus tetap seperti itu.
Setelah mengatur ulang kode saya sehingga saya dapat melihat perubahan Stylus saya, tampilannya seperti ini:
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');
});
Jadi saya memutuskan bahwa langkah pertama adalah mencari tahu mengapa penting untuk memiliki app.router
kode saya. Jadi saya berkomentar, memulai aplikasi saya dan menavigasi ke /
. Ini menampilkan halaman indeks saya dengan baik. Hmm, mungkin berhasil karena saya mengekspor rute dari file rute saya (routes.index). Jadi selanjutnya saya menavigasi ke /test
dan itu ditampilkan Uji di layar. Haha, oke, saya tidak tahu apa app.router
. Apakah itu termasuk dalam kode saya atau tidak, rute saya baik-baik saja. Jadi saya pasti kehilangan sesuatu.
Jadi Inilah Pertanyaan Saya:
Bisakah seseorang tolong jelaskan apa app.router
yang penting, pentingnya, dan di mana saya harus meletakkannya di panggilan middleware saya? Akan lebih baik jika saya mendapat penjelasan singkat tentang express.static()
. Sejauh yang saya tahu, express.static()
adalah cache informasi saya, dan jika aplikasi tidak dapat menemukan halaman yang diminta, itu akan memeriksa cache untuk melihat apakah ada.