मैगेंटो 2 के रिक्जेस्ट कार्यान्वयन में, कई मुख्य मॉड्यूल इस तरह के कॉन्फ़िगरेशन का उपयोग करते हैं
map: {
'*': {
editTrigger: 'mage/edit-trigger',
addClass: 'Magento_Translation/add-class'
}
}
आवश्यकताएँJJS में, map
विन्यास निर्देश डेवलपर्स को RequJS बताने की अनुमति देता है
जब आप मॉड्यूल X को लोड करते हैं, और यह मॉड्यूल Y का उपयोग करता है, तो मॉड्यूल Y को मॉड्यूल Z से बदलें - लेकिन केवल मॉड्यूल X के लिए
या, कोड में
map: {
'modulex':{
'moduley':'modulez'
}
}
यह map
सुविधा मूल रूप से आपको कॉन्फ़िगरेशन के माध्यम से मॉड्यूल परिभाषा को स्वैप करने की अनुमति देती है - मैगेंटो में बोलते हैं, यह जावास्क्रिप्ट के लिए एक मॉड्यूल फिर से लिखना सुविधा है।
हालांकि मेरे लिए यह स्पष्ट नहीं है *
कि map
संपत्ति के लिए मैगेंटो का भारी उपयोग किस तरह से किया जाता है ।
map: {
'*': {
editTrigger: 'mage/edit-trigger',
addClass: 'Magento_Translation/add-class'
}
}
*
मूल रूप से कहते हैं * के लिए इस मानचित्रण सभी मॉड्यूल, और अपने उद्देश्य का मामला है है एक आधार मॉड्यूल अलियासिंग प्रदान है कि अधिक विशिष्ट मॉड्यूल के लिए बदला जा सकता है।
हालांकि, Magento के लिए एक स्थानापन्न के रूप में उपयोग करने के लिए प्रकट होता है RequireJS की paths
संपत्ति । ऐसा लगता है कि Magento निम्नलिखित के साथ एक ही चीज हासिल कर सकता था
paths: {
'editTrigger': 'mage/edit-trigger',
'addClass': 'Magento_Translation/add-class',
}
और फिर जरूरत पड़ने पर चुनिंदा मैपिंग करता है।
क्या किसी को पता है कि मैगेंटो ने map:*
अलियासिंग के लिए अपना तरीका क्यों चुना ? यानी - मेरे बीच के अंतर की समझ है map
और path
अधूरी है - या यह उन "छह में से एक, आधा दर्जन अन्य" चीजों में से एक है। या वहाँ कुछ अतिरिक्त व्यवहार Magento इसे इस तरह से हो जाता है।
विशिष्ट समस्या को हल करने के लिए नहीं, इससे पहले कि मैं इसके बारे में भारी लिखना शुरू करूं, आवश्यकताजेएस और मैगेंटो के कार्यान्वयन की किसी भी गलतफहमी को स्पष्ट करने के लिए कह रहा हूं :)
path: {foo: 'bar'}
आपकोbar
स्पष्ट रूप से आवश्यकता से ब्लॉक कर देगा और केवल इसेfoo
उपनाम द्वारा एक्सेस करने की अनुमति देगा ।