ก่อนที่ฉันจะถามเกี่ยวกับ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', function(req, res){
res.send('Test');
});
ดังนั้นฉันจึงตัดสินใจว่าขั้นตอนแรกคือการค้นหาว่าทำไมมันถึงมีความสำคัญapp.router
ในรหัสของฉันด้วยซ้ำ ดังนั้นผมจึงให้ความเห็นมันออกมาเริ่ม app /
ของฉันและการสำรวจ มันแสดงหน้าดัชนีของฉันได้ดี อืมอาจจะใช้ได้เพราะฉันส่งออกเส้นทางจากไฟล์เส้นทางของฉัน (route.index) ดังนั้นต่อไปฉันไปที่/test
และมันแสดงการทดสอบบนหน้าจอ ฮ่าฮ่าโอเคฉันไม่รู้ว่าapp.router
มันทำอะไร ไม่ว่ามันจะรวมอยู่ในรหัสของฉันหรือไม่เส้นทางของฉันก็โอเค ดังนั้นฉันขาดอะไรบางอย่างแน่นอน
ดังนั้นนี่คือคำถามของฉัน:
ใครช่วยกรุณาอธิบายสิ่งapp.router
ที่สำคัญของมันและที่ฉันควรวางไว้ในมิดเดิลแวร์โทรของฉัน? นอกจากนี้ยังจะดีถ้าผมได้คำอธิบายสั้น ๆ express.static()
เกี่ยวกับ เท่าที่ฉันสามารถบอกได้ว่าexpress.static()
เป็นแคชของข้อมูลของฉันและหากแอปพลิเคชันไม่สามารถค้นหาหน้าที่ร้องขอได้มันจะตรวจสอบแคชเพื่อดูว่ามีอยู่หรือไม่