Node.js / Express.js - app.router ทำงานอย่างไร
ก่อนที่ฉันจะถามเกี่ยวกับapp.routerฉันคิดว่าฉันควรอธิบายอย่างน้อยสิ่งที่ฉันคิดว่าเกิดขึ้นเมื่อทำงานกับมิดเดิลแวร์ app.use()กับการใช้ตัวกลางฟังก์ชั่นการใช้งาน เมื่อมีการดำเนินการมิดเดิลแวร์มันจะเรียกมิดเดิลแวร์ถัดไปโดยใช้next()หรือทำให้มิดเดิลแวร์ไม่ได้รับการเรียก นั่นหมายความว่าลำดับที่ฉันวางสายมิดเดิลแวร์ของฉันมีความสำคัญเพราะมิดเดิลแวร์บางตัวขึ้นอยู่กับมิดเดิลแวร์อื่นและมิดเดิ้ลบางอันใกล้จะสิ้นสุดอาจไม่ถูกเรียก วันนี้ฉันทำงานกับแอปพลิเคชันของฉันและให้เซิร์ฟเวอร์ทำงานในพื้นหลัง ฉันต้องการเปลี่ยนแปลงและรีเฟรชหน้าเว็บและดูการเปลี่ยนแปลงในทันที โดยเฉพาะฉันทำการเปลี่ยนแปลงเค้าโครงของฉัน ฉันไม่สามารถทำงานได้ดังนั้นฉันจึงค้นหา Stack Overflow เพื่อหาคำตอบและพบคำถามนี้ มันบอกว่าเพื่อให้แน่ใจว่าเป็นใต้express.static() require('stylus')แต่เมื่อฉันดูรหัสของ OP ฉันเห็นว่าเขาได้รับapp.routerโทรศัพท์เมื่อโทรมิดเดิลแวร์สิ้นสุดและฉันพยายามหาสาเหตุว่าทำไม เมื่อฉันสร้างแอปพลิเคชัน Express.js ของฉัน (เวอร์ชัน 3.0.0rc4) ฉันใช้คำสั่งexpress app --sessions --css stylusและในไฟล์ app.js รหัสของฉันได้รับการตั้งค่าโดยมีรหัสapp.routerข้างต้นทั้งสองexpress.static()และการrequire('stylus')โทร ดังนั้นดูเหมือนว่าถ้ามันมาพร้อมการติดตั้งแบบนั้นแล้วมันควรจะอยู่อย่างนั้น หลังจากจัดเรียงรหัสของฉันอีกครั้งเพื่อให้ฉันเห็นการเปลี่ยนแปลง Stylus ของฉันดูเหมือนว่า: 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', …