यह सवाल फैली कि What is Node.js' Connect, Express and "middleware"?मिडिलवेयर डिज़ाइन पैटर्न: कनेक्ट
की मैं जावास्क्रिप्ट सीखने का मार्ग जा रहा हूँ -> Node.js -> कनेक्ट -> एक्सप्रेस -> ... क्रम में करने के लिए एक आधुनिक वेब विकास ढेर का उपयोग करने के बारे में जानें। मेरे पास लो-लेयर नेटवर्किंग में पृष्ठभूमि है, इसलिए उठना और Node.js 'net
और http
मॉड्यूल के साथ जाना आसान था। विभिन्न हैंडलरों के अनुरोधों को रूट करने के लिए सर्वर का उपयोग करने का सामान्य पैटर्न प्राकृतिक और अंतर्ज्ञानी लग रहा था।
कनेक्ट करने के लिए आगे बढ़ते हुए, मुझे डर है कि मैं इस "मिडलवेयर" के डेटा के प्रतिमान और सामान्य प्रवाह को समझ नहीं पा रहा हूं। उदाहरण के लिए, अगर मैं कनेक्ट अला के साथ उपयोग के लिए कुछ मिडलवेयर बना देता हूं;
// example.js
module.exports = function (opts) {
// ...
return function(req, res, next) {
// ...
next();
};
};
और "उपयोग" यह कनेक्ट में के माध्यम से
var example = require('./example');
// ...
var server = connect.createServer();
// ...
server.use(example(some_paramater));
मैं जब मेरे मिडलवेयर कहा जाता हो जाता है पता नहीं है। इसके अतिरिक्त, अगर मैं use()
अन्य मिडलवेयर में हूं, तो क्या मुझे उस क्रम पर गारंटी दी जा सकती है जिसमें मिडलवेयर कहा जाता है? Furthuremore, मुझे लगता है कि समारोह next()
अगले (फिर से, मैं ऑर्डरिंग कैसे स्थापित करूं?) मिडलवेयर को कॉल करने के लिए उपयोग किया जाता है; हालांकि, कोई पैरामीटर (req, res, अगला) पास नहीं हो जाते हैं। क्या ये पैरामीटर किसी भी तरह से पारित हो गए हैं?
मैं कि इस्तेमाल किया मिडलवेयर मॉड्यूल के संग्रह एक साथ महसूस कर रहे हैं, http
कॉलबैक के साथ शुरू अनुमान लगा रहा हूँ -> इसलिए कार्यक्षमता का एक समूह प्रारंभिक अनुरोध कॉलबैक की बीच और सर्वर में जोड़ा एक प्रतिक्रिया को समाप्त हुए ।
मैं मिडलवेयर प्रतिमान, और सूचना/निष्पादन के प्रवाह को समझने की कोशिश कर रहा हूं।
किसी भी मदद की बहुत सराहना की जाती है। पढ़ने के लिए
तो अगर मेरे पास 'var ए = आवश्यकता ('./ ए'), बी = आवश्यकता ('./ बी'); app.use (ए()); ऐप.यूज (बी()); 'फिर 'ए'' बी' से पहले आएगा, 'ए' के 'अगले' आविष्कार 'बी' के साथ? क्या पैरामीटर फिर से पारित हो जाते हैं? अन्यथा 'बी' पहुंच 'req, res, ect' कैसे होगी? – gone
बिल्कुल। 'req' और' res' ऑब्जेक्ट्स यात्रा कर रहे हैं और सभी श्रृंखला में एक ही ऑब्जेक्ट है। इस तरह आप इसमें कुछ डेटा सहेज सकते हैं, और उसके बाद श्रृंखला के साथ बाद में इसे किसी अन्य मिडलवेयर में पुन: उपयोग कर सकते हैं। यह वास्तव में 'req' में आपके अधिकांश डेटा के साथ होता है। उदाहरण के लिए डिफ़ॉल्ट POST बॉडी डेटा को पार्स नहीं किया गया है और 'express.bodyParser()' मिडलवेयर इसे पार्स करेगा, और आपके पास बाद में श्रृंखला में इसका उपयोग होगा। – moka
कूल! जवाब के लिए धन्यवाद! – gone