हम विकास के दौरान RequJS और AMD से प्यार करते हैं, जहां हम एक मॉड्यूल संपादित कर सकते हैं, हमारे ब्राउज़र में पुनः लोड कर सकते हैं, और परिणाम तुरंत देख सकते हैं। लेकिन जब हमारे मॉड्यूल को उत्पादन परिनियोजन के लिए एक फ़ाइल में संयोजित करने का समय आता है, तो जाहिर है कि एक एएमडी लोडर अभी भी मौजूद है, चाहे वह लोडर आवश्यक है या उसके छोटे साथी "बादाम" जैसा कि यहां बताया गया है:समेकित RequJS एएमडी मॉड्यूल को लोडर की आवश्यकता क्यों है?
http://requirejs.org/docs/faq-optimization.html#wrap
मेरा भ्रम है: लोडर क्यों आवश्यक है? जब तक आपके पास बहुत ही असामान्य परिस्थितियां न हों जो आपके मॉड्यूल के अंदर require()
कॉल करने के लिए आवश्यक बनाती हैं, तो ऐसा लगता है कि एएमडी मॉड्यूल की एक श्रृंखला लोडर उपस्थिति के बिना समेकित की जा सकती है। सबसे आसान संभव उदाहरण निम्नलिखित की तरह मॉड्यूल की एक जोड़ी होगी।
ModA.js:
define([], function() {
return {a: 1};
});
ModB.js:
define(['ModA'], function(A) {
return {b : 2};
});
इन दो मॉड्यूल को देखते हुए ऐसा लगता है कि एक concatenator बस निम्न पाठ बोझ नहीं उत्पादन सर्वर उत्पादन कर सकता है, और या अतिरिक्त बैंडविड्थ या कंप्यूशन के साथ ब्राउज़र या तो RequJS या बादाम द्वारा आवश्यक है।
मैं एक concatenator कि पैदा करता है की कल्पना (और मैं उपयोग कर रहा हूँ शेवरॉन-उद्धरण «,» दिखाने के लिए जहां दो मॉड्यूल के स्निपेट के ऊपर सम्मिलित किया गया है):
यह अब तक के रूप में मैं कर सकते हैं देखें, कम से कम बाहरी गोंद जावास्क्रिप्ट के साथ, एएमडी के अर्थशास्त्र को सही ढंग से पुन: उत्पन्न करेगा। क्या ऐसा कोई संयोजक उपलब्ध है? यदि नहीं, तो क्या मैं यह सोचने के लिए मूर्ख बनूंगा कि मुझे एक लिखना चाहिए - क्या वास्तव में बहुत कम कोड बेस हैं जिनमें define()
के साथ लिखे गए सरल और साफ मॉड्यूल शामिल हैं और जिन्हें कभी भी require()
कॉल की आवश्यकता नहीं है जो बाद में कोड के एसिंक्रोनस फ़ेच को लातें?
आपने इस समस्या को कैसे हल किया? मैंने पाया कि बादाम का उपयोग करके, न्यूनतम फ़ाइल 3k से अधिक है तो समेकित फ़ाइल (9 के बनाम 6 के)। – Naor