2015-07-14 3 views
8

एक आवश्यकताजेएस वातावरण में, कुछ एएमडी मॉड्यूल को लो-डैश का उपयोग करने की अनुमति देने का सबसे अच्छा तरीका क्या है जबकि अन्य एक साथ अंडरस्कोर का उपयोग करते हैं?RequJS पर्यावरण में कम-से-कम लो-डैश और अंडरस्कोर का उपयोग करके

+7

लो-पानी का छींटा होना चाहिए एक ड्रॉप में अंडरस्कोर के लिए प्रतिस्थापन (लेकिन आसपास नहीं दूसरी तरह) तो क्यों तुम सिर्फ लो-डैश का उपयोग नहीं करते हैं? –

+0

मेरे पास विरासत मॉड्यूल हैं जो लो-डैश के साथ संगत नहीं हैं जिन्हें लो-डैश का उपयोग करने वाले नए मॉड्यूल के साथ एक साथ चलाने की आवश्यकता है। पुराने मॉड्यूल का पुन: उपयोग और परीक्षण वर्तमान में संभव नहीं है। –

+0

। । । और लोकप्रिय धारणा और दावों के विपरीत, लो-डैश अंडरस्कोर के लिए एक आदर्श ड्रॉप-इन प्रतिस्थापन नहीं है। –

उत्तर

7

मैं खुद को समस्या को हल करने में सक्षम था। विशेष रूप से मॉड्यूल है कि लो-डैश और underscore मॉड्यूल है कि "अंडरस्कोर" की आवश्यकता के लिए आवश्यकता होती है के लिए lodash पथ का उपयोग करें:

require.config({ 
    paths: { 
    'underscore': 'path-to-my-underscore-file', 
    'lodash': 'path-to-my-lodash-file' 
    } 
}); 

इस तरह, दो लाइब्रेरी में ऐसी कोई हस्तक्षेप के बिना एक साथ इस्तेमाल किया जा सकता है।

लोकप्रिय धारणा और दावों के विपरीत, लो-डैश अंडरस्कोर के लिए सही ड्रॉप-इन प्रतिस्थापन नहीं है।

+0

मुझे यकीन नहीं है कि लो-डैश का दावा कर रहा है कि मेबेब लो-डैश के लिए अंडरस्कोर के लिए एकदम सही ड्रॉप-इन प्रतिस्थापन है? – Xaxis

+1

इस प्रश्न की पहली टिप्पणी पर अप-वोटों की संख्या आम गलत धारणा को इंगित करती है। शायद यह माना जाता है क्योंकि अंडरस्कोर और लो-डैश दोनों "_" वैश्विक का उपयोग करते हैं। –

5

आपके द्वारा पहले से वर्णित पथन समाधान एक विकल्प है (मुझे बेहतर लगता है)। मुझे एक वैकल्पिक तरीके से पता है, लेकिन मुझे जरूरी नहीं लगता कि यह बेहतर है क्योंकि यह अधिक भ्रामक है। आप विभिन्न पैकेजों के लिए "lodash" और "underscore" का अर्थ क्या निकाल सकते हैं।

requirejs.config({ 
    paths: { 
     'underscore': 'path-to-my-underscore-file', 
     'lodash': 'path-to-my-lodash-file' 
    }, 
    map: { 
     'some/lodash_compatible_module': { 
      'underscore': 'lodash' 
     }, 
     'some/lodash_compatible_folder': { 
      'underscore': 'lodash' 
     }, 
     'some/oldmodule_or_folder': { 
      'underscore': 'underscore' 
     } 
    } 
}); 

आप एक मुखौटा आप भी कुछ इस तरह कर सकता है और साथ ही बनाना चाहते हैं: हालांकि इस दृष्टिकोण के साथ कुछ नकारात्मक हैं

requirejs.config({ 
    paths: { 
     utils: 'lodash', 
     'underscore': 'path-to-my-underscore-file', 
     'lodash': 'path-to-my-lodash-file' 
    }, 
    map: { 
     'some/lodash_compatible_module': { 
      'utils': 'lodash' 
     }, 
     'some/lodash_compatible_folder': { 
      'utils': 'lodash' 
     }, 
     'some/oldmodule_or_folder': { 
      'utils': 'underscore' 
     } 
    } 
}); 

। कुछ शांत चीजें हैं। अर्थात् रीमेप करने में सक्षम होने के नाते कौन सी तृतीय पक्ष निर्भरता एक पैकेज सोच सकती है (यदि यह एक समस्या है)।

कैसे नक्शा काम करता है की जाँच के बारे में अधिक जानकारी के लिए: http://requirejs.org/docs/api.html#config-map

+0

बहुत रोचक तारों! –

संबंधित मुद्दे