2012-05-29 12 views
9

का उपयोग करके आवश्यकताएँ requjs2 द्वारा shim का उपयोग करके, यह बताने का एक तरीका है कि एक मॉड्यूल पहले ही लोड हो चुका है?शिम

उदाहरण:

<script type="text/javascript" src="jquery.js"></script> 
<script type="text/javascript" src="undescrore.js"></script> 
<script type="text/javascript" src="require.js'"></script> 
<script type="text/javascript"> 
    require.config({ 
     paths: { 
      "backbone": '/vendor/js/backbone-min.js' 
     }, 
     shim: { 
      'backbone': { 
       //These script dependencies should be loaded before loading 
       //backbone.js 
       deps: ['underscore', 'jquery'], // here I would like to load the already loaded library 
      } 
     } 
    }); 
</script> 

उत्तर

23

ठीक है, अगर अंडरस्कोर पहले से ही भरा हुआ है और उपलब्ध है, तो आप शिम बिल्कुल जरूरत नहीं है। बैकबोन खुशी से लोड हो जाएगा। यदि नहीं, तो शायद यह है क्योंकि अंडरस्कोर वास्तव में लोड नहीं हुआ है।

हालांकि यह केवल आंशिक रूप से requ.js का उपयोग करने में गलत लगता है, आप भी उन्हें एएमडी लोड कर सकते हैं। निश्चित रूप से अपने paths अद्यतन

shim: { 
    backbone: { 
     deps: ["underscore", "jquery"], 
     exports: "Backbone" 
    }, 

    underscore: { 
     exports: "_" 
    } 
} 

और: है कि आप इस तरह अपने शिम बदलना होगा ऐसा करने के लिए।

1

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

<script type="text/javascript" src="jquery.js"></script> 
<script type="text/javascript" src="undescrore.js"></script> 
<script type="text/javascript" src="require.js'"></script> 
<script type="text/javascript"> 
    // check for jQuery 
    if (window.jQuery) { 
     define('jquery', [], function() { 
      return window.jQuery; 
     }); 
    } 

    // check for underscore 
    if (window._) { 
     define('underscore', [], function() { 
      return window._; 
     }); 
    } 

    require.config({ 
     paths: { 
      // remove the file extension (.js)   
      "backbone": '/vendor/js/backbone-min' 
     }, 
     shim: { 
      'backbone': { 
       deps: ['underscore', 'jquery'] 
      } 
     } 
    }); 
</script> 
संबंधित मुद्दे