- - - - - आम बनाम बनाम एएमजे बनाम ईएस 6 मॉड्यूल - - - - -

इससे पहले कि मैं मॉड्यूलर सेक्शन में कदम रखूं, कृपया मेरी अनूठी तुलना, गारबेज कलेक्शन बनाम ऑटोमैटिक रेफरेंस काउंटिंग देखें।

जावास्क्रिप्ट मॉड्यूल स्वतंत्र, पुन: प्रयोज्य कोड की एक छोटी इकाइयों को संदर्भित करता है। उनके पास अलग-अलग कार्यक्षमता है, जिससे उन्हें सिस्टम को बाधित किए बिना जोड़ा जा सकता है। यह लगता है कि जावा या पायथन में कक्षाओं का उपयोग कैसे किया जाता है।

मॉड्यूल आत्म-निहित हैं। मॉड्यूल को अपडेट करना बहुत आसान है अगर इसे कोड के अन्य टुकड़ों से डिकॉउंड किया जाता है। यह प्रोग्रामर को कार्यक्रम के माध्यम से बहुत कम डराने के लिए प्रोत्साहित करता है। यह नाम स्थान की अस्पष्टता को हल करता है और साथ ही वस्तुओं को सार्वजनिक रूप से सुलभ नामस्थान में बनाए जाने की अनुमति देता है जबकि इसमें कार्य निजी रहते हैं। मॉड्यूल का पुन: उपयोग किया जा सकता है, जिससे कोड के डुप्लिकेट टुकड़ों को नष्ट कर दिया जाता है जिससे बड़ी मात्रा में समय की बचत होती है।
मॉड्यूल आने से पहले, द रेविंग मॉड्यूल मॉड्यूल का उपयोग किया जा रहा था।

var खुलासामॉडल = (फ़ंक्शन () {
    var PrivateVar = "बेन थॉमस";
    फ़ंक्शन सेटनामें (strName) {
        प्राइवेटवेर = स्ट्रैनाम;
    }
वापसी {
        सेटनाम: सेटनाम,
    };
}) ();
RevealingModule.setName ("पॉल एडम्स");

इस कार्यक्रम में, सार्वजनिक कार्यों को उजागर किया जाता है, जबकि निजी संपत्तियों और विधियों को समझाया जाता है।

एक ही फाइल में कई मॉड्यूल को परिभाषित किया जा सकता है, लेकिन डाउनस्लाइड यह है कि मॉड्यूल की अतुल्यकालिक लोडिंग संभव नहीं है, मॉड्यूल को प्रोग्रामेटिक रूप से आयात नहीं कर सकता है।

CommonJS

वे कीवर्ड सिस्टम की आवश्यकता और निर्यात का उपयोग करके मॉड्यूल सिस्टम के साथ बातचीत करने के लिए एक अलग दृष्टिकोण के साथ आए थे। आवश्यकता एक फ़ंक्शन है जिसका उपयोग दूसरे मॉड्यूल से फ़ंक्शन आयात करने के लिए किया जाता है। निर्यात एक ऐसी वस्तु है जहाँ किसी भी कार्य को करने पर उसे निर्यात किया जाएगा।

// ------ भुगतान.जेएस ------
var customerStore = आवश्यकता ('स्टोर / ग्राहक'); // आयात मॉड्यूल
// ------ दुकान / customer.js ------
निर्यात = कार्य () {
    ग्राहकों को वापस जाएं। ('स्टोर);
}

उपरोक्त उदाहरण में, customerStore को भुगतानों में आयात किया गया है। js। फ़ंक्शन जो ग्राहक मॉड्यूल में निर्यात ऑब्जेक्ट पर सेट है, भुगतान फ़ाइल में लोड किया गया है।

ये मॉड्यूल सर्वर के विकास के लिए डिज़ाइनर हैं और ये सिंक्रोनस हैं। फ़ाइल के अंदर एक-एक करके फाइलें लोड की जाती हैं।

NodeJS कार्यान्वयन

वे कॉमनजेएस विनिर्देश से बहुत प्रभावित हैं। निर्यात वस्तु में बड़ा अंतर पैदा होता है। NodeJS मॉड्यूल निर्यात किए जाने वाले ऑब्जेक्ट के रूप में मॉड्यूल.एक्सपोर्ट्स का उपयोग करते हैं जबकि कॉमनजेएस सिर्फ निर्यात चर का उपयोग करता है।

//payments.js
var customerStore = आवश्यकता ('स्टोर / ग्राहक'); // आयात मॉड्यूल
//store/customer.js
फ़ंक्शन customerStore () {
    ग्राहकों को वापस जाएं। ('स्टोर);
}
mod.exports = customerStore;

वे प्रकृति में भी समकालिक हैं। नोड_मॉड्यूल्स निर्देशिका के अंदर मॉड्यूल नाम के लिए आवश्यक जांच के लिए पैरामीटर पारित किया गया। परिपत्र निर्भरताएं समर्थित हैं और एक डेवलपर अवधारणाओं को आसानी से समझ सकता है। विपक्ष प्रति मॉड्यूल सिर्फ एक फ़ाइल है, केवल ऑब्जेक्ट्स को मॉड्यूल के रूप में बनाया जाता है और ब्राउज़र इन मॉड्यूल का उपयोग सीधे ट्रांसप्लिंग के बिना नहीं कर सकते हैं।

लेकिन हाल ही में Browserify, मॉड्यूल से कोड को बंडल करने के लिए उपयोग किया जाता है, ब्राउज़र में इस पद्धति का उपयोग करता है। वेबपैक स्रोत परिवर्तनों की जटिल पाइपलाइनों को भी संभालता है जिसमें कॉमनजेएस मॉड्यूल शामिल हैं।

अतुल्यकालिक मॉड्यूल परिभाषा (AMD)

एएमडी का जन्म कॉमनजस के रूप में हुआ था, जो ब्राउज़रों के लिए जल्दी अनुकूल नहीं थे। जैसा कि नाम से ही स्पष्ट है कि यह अतुल्यकालिक मॉड्यूल लोडिंग का समर्थन करता है।

परिभाषित (['मॉड्यूल 1', ', मॉड्यूल 2'], फ़ंक्शन (मॉड्यूल 1, मॉड्यूल 2) {
  console.log (module1.setName ());
});

फ़ंक्शन को तभी कहा जाता है जब अनुरोध किए गए मॉड्यूल लोड हो रहे हों। परिभाषित फ़ंक्शन निर्भरता मॉड्यूल की एक सरणी के रूप में पहला तर्क लेता है। इन मॉड्यूल को पृष्ठभूमि में एक गैर-अवरुद्ध तरीके से लोड किया जाता है और लोडिंग पूरा होने के बाद, कॉलबैक फ़ंक्शन निष्पादित किया जाता है।

इसे बेहतर स्टार्टअप समय के लिए ब्राउज़र में उपयोग करने के लिए डिज़ाइन किया गया है और ये मॉड्यूल ऑब्जेक्ट्स, फ़ंक्शंस, कंस्ट्रक्टर, स्ट्रिंग्स, JSON आदि हो सकते हैं। मॉड्यूल को कई फ़ाइलों में विभाजित किया जा सकता है, जो आवश्यकता के लिए अनुकूल हैं और निर्यात और परिपत्र निर्भरता के रूप में समर्थित हैं। कुंआ।

आवश्यकताएं AMD एपीआई को लागू करती हैं। यह सादे स्क्रिप्ट टैग का उपयोग करके सादे जावास्क्रिप्ट फ़ाइलों के साथ-साथ मॉड्यूल को भी लोड करता है। इसमें एक अनुकूलन उपकरण शामिल है जिसे बेहतर प्रदर्शन के लिए हमारे कोड को तैनात करते समय चलाया जा सकता है।

<स्क्रिप्ट डेटा-मुख्य = "स्क्रिप्ट / मुख्य" src = "स्क्रिप्ट / आवश्यकता। js"> 

यह केवल एकमात्र कोड है जिसमें आवश्यकताएँ शामिल हैं। डेटा-मुख्य विशेषता आरंभीकरण को परिभाषित करता है और यह स्क्रिप्ट और निर्भरता के लिए दिखता है।

जैसा कि आपने शायद देखा है, ऊपर दिए गए किसी भी मॉड्यूल का मूल निवासी जावास्क्रिप्ट नहीं था। हमने मॉड्यूल पैटर्न, कॉमनजस और एएमडी का उपयोग करके एक मॉड्यूल सिस्टम का अनुकरण करने की कोशिश की। सौभाग्य से, ECMAScript 6 ने अंतर्निहित मॉड्यूल पेश किए हैं जो इसे अगले और अंतिम खंड के माध्यम से ले जाता है।

ECMAScript 6 मॉड्यूल (नेटिव जावास्क्रिप्ट)

ECMAScript 6 a.k.a., ES6 a.ka., ES2015 ऑपरेशन के तुल्यकालिक और अतुल्यकालिक मोड दोनों के साथ संगत मॉड्यूल के आयात और निर्यात के लिए संभावनाएं प्रदान करता है।

// ------ lib.js ------
निर्यात const sqrt = Math.sqrt;
निर्यात समारोह वर्ग (x) {
    वापसी x * x;
}
निर्यात समारोह डायग (x, y) {
    वापसी sqrt (वर्ग (x) + वर्ग (y));
}
// ------ main.js ------
'lib' से आयात {स्क्वायर, डायग};
console.log (वर्ग (11)); // 121
कंसोल.लॉग (डायग (4, 3)); // 5

आयात विवरण का उपयोग मॉड्यूल को नेमस्पेस में लाने के लिए किया जाता है। यह गतिशील नहीं है, फ़ाइल में कहीं भी उपयोग नहीं किया जा सकता है। यह आवश्यकता और परिभाषित के विपरीत है। Th निर्यात विवरण तत्वों को सार्वजनिक करता है। यह स्थैतिक व्यवहार स्थिर विश्लेषणकर्ताओं को बिना कोड को चलाए फ़ाइल को बंडल करते समय निर्भरता के वृक्ष का निर्माण करता है। इसका उपयोग आधुनिक जावास्क्रिप्ट फ्रेमवर्क जैसे रिएक्टजेएस, एम्बरजेएस आदि द्वारा किया जाता है। दोष यह है कि यह पूरी तरह से ब्राउज़रों में लागू नहीं होता है और इसे असमर्थित ब्राउज़रों में रेंडर करने के लिए बैबिल की तरह एक ट्रांसपिलर की आवश्यकता होती है।

यदि आप एक नया मॉड्यूल या प्रोजेक्ट शुरू करना चाहते हैं, तो ES2015 जाने का सही तरीका है और कॉमनजेएस / नोड सर्वर के लिए विकल्प बना हुआ है।

पढ़ने के लिए धन्यवाद।
अगर आपको यह लेख अच्छा लगा हो तो बेझिझक उस ताली के बटन को दबाएं, दूसरों को खोजने में मदद करें।
Https://medium.com/@mohanesh पर मेरा अनुसरण करें