इससे पहले कि मैं app.routerसोचता हूं कि मुझे लगता है कि मुझे कम से कम यह बताना चाहिए कि मिडलवेयर के साथ काम करने पर मुझे क्या लगता है। मिडलवेयर का उपयोग करने के लिए, उपयोग करने का कार्य है app.use()। जब मिडलवेयर को निष्पादित किया जा रहा है, तो यह या तो अगले मिडलवेयर का उपयोग करके कॉल करेगा या next()इसे बना देगा ताकि कोई और मिडलवेयर कॉल न हो। इसका मतलब है कि जिस क्रम में मैं अपनी मिडलवेयर कॉल करता हूं, वह महत्वपूर्ण है, क्योंकि कुछ मिडलवेयर अन्य मिडलवेयर पर निर्भर करता है, और अंत के पास के कुछ मिडलवेयर को भी नहीं बुलाया जा सकता है।
आज मैं अपने एप्लिकेशन पर काम कर रहा था और मेरा सर्वर बैकग्राउंड में चल रहा था। मैं कुछ बदलाव करना चाहता था और अपने पेज को रीफ्रेश करके तुरंत बदलाव देखना चाहता था। विशेष रूप से, मैं अपने लेआउट में परिवर्तन कर रहा था। मुझे यह काम करने के लिए नहीं मिला इसलिए मैंने उत्तर के लिए स्टैक ओवरफ्लो की खोज की और इस प्रश्न को पाया । यह सुनिश्चित करने के लिए कहता है कि express.static()नीचे है require('stylus')। लेकिन जब मैं उस ओपी कोड को देख रहा था, तो मैंने देखा कि app.routerउसके मिडलवेयर कॉल के अंत में उसका कॉल था, और मैंने यह जानने की कोशिश की कि वह क्यों था।
जब मैंने अपना Express.js एप्लिकेशन (संस्करण 3.0.0rc4) बनाया, तो मैंने कमांड का उपयोग किया express app --sessions --css stylusऔर अपने app.js फ़ाइल में कोड को मेरे app.routerऊपर express.static()और require('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मेरे कोड में भी क्यों महत्वपूर्ण है । इसलिए मैंने इसे टिप्पणी की, अपना ऐप शुरू किया और नेविगेट किया /। इसने मेरे सूचकांक पृष्ठ को ठीक प्रदर्शित किया। हम्म, शायद यह काम किया क्योंकि मैं अपने मार्गों फ़ाइल (मार्गों.index) से मार्ग निर्यात कर रहा था। इसलिए अगली बार मैंने /testइसे नेविगेट किया और इसने स्क्रीन पर टेस्ट प्रदर्शित किया। हाहा, ठीक है, मुझे नहीं पता कि क्या app.routerकरता है। यह मेरे कोड में शामिल है या नहीं, मेरी रूटिंग ठीक है। इसलिए मुझे निश्चित रूप से कुछ याद आ रहा है।
तो ये रहा मेरा प्रश्न:
क्या कोई app.routerयह बता सकता है कि इसका क्या महत्व है, और मुझे इसे अपने मिडलवेयर कॉल में कहां रखना चाहिए? यह भी अच्छा होगा अगर मुझे इसके बारे में एक संक्षिप्त विवरण मिला express.static()। जहां तक मैं बता सकता हूं, express.static()मेरी जानकारी का एक कैश है, और यदि एप्लिकेशन अनुरोधित पेज नहीं ढूंढ सकता है, तो यह देखने के लिए कैश की जांच करेगा कि क्या यह मौजूद है।