2013-10-07 5 views
23

यह समझने की कोशिश कर रहा है कि वाइल्डकार्ड बनाम "पथ" के साथ "मानचित्र" का उपयोग करने का अधिकार कहां है।आवश्यकताएँ: पथ बनाम मानचित्र

आवश्यक स्रोत को देखते हुए (लेकिन निश्चित रूप से 100% धाराप्रवाह नहीं है) ऐसा लगता है कि इन दो स्निपेट के बीच कोई अंतर नहीं होगा। क्या यह सच है?

का उपयोग करते हुए पथ:

require.config({ 
    baseUrl: "include/js/", 
    paths: { 
    foo: "stuff/foo", 
    } 
    }); 

मानचित्र का प्रयोग:

require.config({ 
    baseUrl: "include/js/", 
    map: { 
    '*': {foo: "stuff/foo"}, 
    } 
    }); 

उत्तर

7

RequJS डॉक्स से "इसके अलावा, पथ कॉन्फ़िगरेशन केवल मॉड्यूल आईडी के लिए रूट पथ स्थापित करने के लिए है, न कि एक मॉड्यूल आईडी को किसी अन्य पर मैप करने के लिए।"

इसका मतलब है कि "पथ" का अर्थ केवल आपके संसाधन के पथ को मैप करने के लिए है जब यह डिफ़ॉल्ट स्थान (बेसयूआरएल) में नहीं है। मुझे लगता है कि आप यही करने की कोशिश कर रहे थे।

दूसरी तरफ, "मानचित्र" के साथ आपके पास अपने संसाधन (foo1, foo2 ...) के कई संस्करण हो सकते हैं जिन्हें आप विभिन्न पथों से लोड करने के लिए मानचित्र कर सकते हैं (यानी आप डेस्कटॉप ब्राउज़र से foo1 लोड करना चाहते हैं और foo2 जो मोबाइल ब्राउज़र से पहले का एक संशोधन है)।

इसलिए, जब तक आपके पास foo के विभिन्न संस्करण नहीं हैं, मैं "पथ" का उपयोग करूंगा हालांकि आप सही हैं और "मानचित्र" उस मामले में भी काम करेगा।

+0

यह "पथ" नहीं है "पथ" :) लेकिन अच्छा जवाब! – OZZIE

8

मैं एक अंतर पाया है, और कहा कि requirejs लोडर प्लगइन्स, उदाहरण के उदाहरण के मामले में बताया गया है: CoffeeScript के लिए define(['cs!module'], function(){...})

प्लगइन घोषित करने के लिए map:* कॉन्फ़िगरेशन का हिस्सा और निर्भर मॉड्यूल के लिए paths) ब्राउज़र में काम किया। हालांकि, नोड में, आवश्यकताएं लोडर प्लगइन्स का पता लगाने में असफल हो जाएंगी जब तक कि वे paths से कम न हों।

अंत में, नोड और ब्राउज़र में एक ही config चलाने के लिए सक्षम होने के लिए, मैं map:* अनुभाग से छुटकारा मिला, और paths में सब कुछ की घोषणा की और यह अब मेरे लिए बस ठीक काम करता है, भले ही मैं मैं अभी भी क्यों कुछ स्पष्टीकरण प्राप्त करने की उम्मीद कर रहा हूं।

4

मानचित्र कॉन्फ़िगरेशन के साथ एक अन्य महत्वपूर्ण अंतर भी है। आप उपसर्ग परिभाषित करते हैं जो मैपिंग में उपयोग किया जाएगा।

अपने उदाहरण के लिए इसका मतलब यह होगा कि foostuff/foo को मैप किया जाएगा, लेकिन यह भी foo/bar/baz/bamstuff/foo/bar/baz/bam को मैप किया जाएगा।

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