एक कोर अंतर यह है कि मुझे जल्दी उपयोग में नाराज पता लगाना था कि एक define
कभी नहीं कहा जा सकता है।
जब तक प्रति फ़ाइल केवल define
है, तो वह उस मॉड्यूल को उस फ़ाइल नाम के तहत पंजीकृत करेगा। हालांकि, define
मॉड्यूल केवल require
फ़ंक्शन में से प्रत्येक के लिए पूछे जाने पर लोड हो जाते हैं।
परिभाषित करें: यदि आपको XXX की आवश्यकता है, तो पहले इन अन्य चीजों को लोड करें, फिर इस फ़ंक्शन का परिणाम वापस करें।
आवश्यक: इन अन्य चीजों को लोड करें, फिर इस फ़ंक्शन को चलाएं। (कोई "अगर")
उदाहरण:
// this is in company/welcomepage.js
define(['company/ui_library'],
function(uiLib) {
console.log('Welcome to {company}!');
}
);
हैं कि केवल जावास्क्रिप्ट फ़ाइल है, तो आप अपने पृष्ठ को खोलने सकता है, और कुछ नहीं होगा: मान लीजिए कि आप इस अपने पेज में फ़ाइल जेएस शामिल करते हैं कंसोल लॉग में, स्क्रिप्ट के बावजूद यह उपयोगकर्ता का स्वागत करने के लिए कह रहा है। हालांकि, उस पेज में अगर कहीं बदलता है या किसी अन्य लिपि में, आपको निम्न सम्मिलित करें:
require(['company/welcomepage'], function() {
// optionally insert some other page-initialization logic here
});
अब, पेज कंसोल में एक स्वागत संदेश डाल देंगे जब यह लोड करता है।
असल में, उस दूसरे स्थान पर, मैन्युअल रूप से की आवश्यकता नहीं होगी <script>
टैग के रूप में welcomepage.js शामिल करें; जैसे ही यह आवश्यकता को देखता है, यह इसे अपने स्थान से लोड करेगा, और इसे समझने की आवश्यकता है।
देखें http://stackoverflow.com/questions/9507606/when-to-use-require-and-when-to-use-define –
यह _is_ डुप्लिकेट है लेकिन यहां स्पष्टीकरण उदाहरण के संदर्भ में दिया जाना चाहिए । –