2012-11-13 11 views
5

क्या मौजूदा प्रोजेक्ट वातावरण (उदाहरण के लिए विकास या उत्पादन) के अनुसार अलग-अलग फ़ाइलों को लोड करने की कोई कार्यक्षमता है? मेरा मतलब कुछ है, जो मुझे पारदर्शी रूप से minified या पूर्ण फ़ाइलों को लोड करने में मदद करता है। मैंने मल्टीवर्सन लोडिंग के बारे में पढ़ा है, लेकिन बहुसंख्यक का अर्थ है कि मुझे फ़ाइल का संस्करण निर्दिष्ट करने की आवश्यकता है।
उदाहरण के लिए मेरे मॉड्यूल के साथ module.js फ़ाइल है। इस फाइल में मैं jQuery लोड करने के लिए की जरूरत है:RequJS: पर्यावरण के अनुसार विभिन्न फ़ाइलों को लोड करना

require(['jquery]); 

लेकिन मैं न्यूनतम किया गया है और jQuery के पूर्ण संस्करण और मैं अलग फ़ाइलें लोड करना चाहते हैं। मैं कॉन्फ़िगरेशन में इस तरह के बारे में सोच रहा हूं:

require.config({ 
     paths: { 
      'jquery' : function(){ 
       if(MODE == 'DEV'){ 
        return 'jquery'; 
       }else{ 
        return 'jquery.min' 
       } 
      } 
     } 
    }); 

या, शायद कुछ ऐसा ही हो।

उत्तर

1

कोई अगर अब भी पता चला है कि कैसे करना चाहते हैं:

require.config({ 
    paths: { 
     'jquery' : (function(){ 
      if(MODE == 'DEV'){ 
       return 'jquery'; 
      }else{ 
       return 'jquery.min' 
      } 
     })() 
    } 
}); 

इस समारोह गुमनाम समारोह लागू स्व है। यह परिभाषा स्थान में तत्काल आमंत्रित करता है।

2

यदि आप the r.js optimizer का उपयोग करते हैं तो इस प्रक्रिया को आपके लिए ख्याल रखा जा सकता है। अपने scripts फ़ोल्डर में सभी उद्देश्यों, libs और अन्य कोड dev उद्देश्यों के लिए असम्पीडित छोड़ दें। मैं अक्सर इस

scripts/ 
    lib/ 
    modules/ 

की तरह कुछ जब उपयोग के लिए तैयार एक build.js बना सकते हैं और विभिन्न विकल्पों को कॉन्फ़िगर किया है। मैं एक ऐसी ही config का एक उदाहरण दे देंगे मैं का इस्तेमाल किया है:

({ 
    baseUrl: '../scripts', 
    dir: '../scripts.min', 

    paths: { 
     'jquery': 'lib/jquery' 
    }, 

    removeCombined: true, 

    optimize: 'uglify', 
    preserveLicenseComments: false, 
    uglify: { 
     max_line_length: 3500, 
     no_copyright: true 
    }, 

    modules: [ 
     { 
      name: 'module1' 
     }, 
     { 
      name: 'module2', 
      exclude: ['jquery'] 
     } 
    ] 
}) 

अधिक जानकारी इस विकल्प can be found in this example configuration में से प्रत्येक पर, लेकिन मैं dir की ओर ध्यान आकर्षित होगा और जहां अपनी स्क्रिप्ट खत्म हो जाएगा removeCombined

dir जाहिर है अप। मैं प्रत्यय .min या कुछ समान के साथ मेरी स्क्रिप्ट के आस-पास एक फ़ोल्डर बनाना चाहता हूं। फिर, जब आप उत्पादन करने के लिए जाने के लिए तैयार हों, तो बस scripts.min

require.config({ 
    baseUrl: '/scripts.min' // Now the site will load scripts from the optimised folder 

    // Other options 
}) 

को बदलने के अपने config baseUrl की आवश्यकता होती है डिफ़ॉल्ट रूप से, r.js कि क्या वे पहले से ही एक और js में सम्मिलित किया गया है की परवाह किए बिना भर में स्क्रिप्ट कॉपी जाएगा फ़ाइल या नहीं। removeCombined से true सेट करने से यह सुनिश्चित होगा कि आपके scripts.min फ़ोल्डर में केवल उत्पादन के लिए आवश्यक फ़ाइलें हों।

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