2012-11-06 13 views
27

जब मैं एक नमूना एक्सप्रेस आवेदन एक्सप्रेस द्विआधारी का उपयोग कर बनाने के लिए, बूटस्ट्रैप कोड इन पंक्तियों है। मैंने सोचा कि यह मिडलवेयर है जो रूटिंग (app.get(), app.post() इत्यादि नियमों को संभालता है, लेकिन जब मैं app.use (app.router) को हटाता हूं तो इन नियमों को भी निष्पादित किया जाता है; लाइन।एक्सप्रेस में, app.router वास्तव में क्या करता है?</p> <pre><code>... var app = express(); ... app.use(app.router); </code></pre> <p>मैं app.router के बारे में ज्यादा नहीं मिला:

तो इस मिडलवेयर का सटीक purpuse क्या है?

+1

यदि आप इसे स्पष्ट रूप से परिभाषित नहीं करते हैं तो एक्सप्रेस आपके लिए यह करेगा जब यह app.verb से मुकाबला करता है। – Pickels

+0

यहां अच्छा जवाब http://stackoverflow.com/questions/12695591/node-js-express-js-how-does-app-router-work – IvanM

+2

एक्सप्रेस 4 के रूप में, app.use (app.router) हटा दिया गया है। कृपया दस्तावेज़ों को देखें https://github.com/visionmedia/express/wiki/New-features-in-4.x –

उत्तर

15

यह एक्सप्रेस 2.x गाइड http://expressjs.com/2x/guide.html

"नोट app.router का उपयोग, जो (वैकल्पिक) आवेदन मार्गों माउंट करने के लिए इस्तेमाल किया जा सकता है, एप्लिकेशन को अन्यथा पहली कॉल से है। प्राप्त करें(), app.post(), आदि मार्गों को माउंट करेंगे। "

मुझे संदेह है कि यह एक्सप्रेस 3.x पर भी लागू होता है।

36

एक्सप्रेस 3.x में, app.router connect middleware router का एक उन्नत संस्करण है। के रूप में हेक्टर ने कहा, यह, थे एक्सप्रेस app.get, app.post के साथ पंजीकृत अनुरोध संचालकों हैंडल आदि

आप app.use(app.router) फोन नहीं है, तो स्पष्ट रूप से तो फिर भी व्यक्त यह फोन करेगा परोक्ष पहली बार जब आप app.get(...) उपयोग करते हैं, app.post(...), आदि, आप स्पष्ट रूप से .use करना चाह सकते हैं, क्योंकि तब आप अपने सभी मिडलवेयर का ऑर्डर चुन सकते हैं।

app.use(express.favicon()); 
app.use(express.bodyParser()); 
app.use(express.methodOverride()); 
// app.get, app.post, etc called before static folder 
app.use(app.router); 
app.use(express.static(path.join(__dirname, 'public'))); 

देखें कैसे रूटर एक्सप्रेस 3 स्रोत here में लिया गया है।

नोट करें कि Express 4 doesn't need app.router

+4

मुझे समझ में आता है कि @Zsombor ने अन्य उत्तर क्यों स्वीकार किया, जो कि उनके पूछने के समय केवल एक ही था, लेकिन यह जवाब बहुत बेहतर है कि यह उस प्राथमिक कारण को हाइलाइट करता है जिसे आप ऐप को कॉल करना चाहते हैं। स्पष्ट रूप से, जो ऑर्डर इंस्टॉलेशन को नियंत्रित करना है। –

0

इस विधि

कारण है कि हम रूटर का उपयोग की ..because हम अपने मुख्य अनुप्रयोग के लिए हमारी उप एप्लिकेशन कनेक्ट करने की आवश्यकता मान्य नहीं है।

संबंधित मुद्दे