2012-07-13 7 views
12

R.js मेरी शिम लोड नहीं कर रहा है, और इस प्रकार jQuery छोटे से पहले लोड हो रहा है और छोटे लोड होने से पहले इसे प्रारंभ किया जा रहा है। मैं कैसे शिम काम करने के लिए प्राप्त कर सकते हैं ?:Requ.js + R.js Optimizer Shim

निर्माण js.js:

var requirejs = require('requirejs'); 
var config = { 
    mainConfigFile: '../js/main.js', 
    include: [], 
    name: 'main', 
    out: '../js/build/build.js', 
}; 

    requirejs.optimize(config, function (buildResponse) { 
    var contents = fs.readFileSync(config.out, 'utf8'); 
}); 

main.js:

require.config({ 
    paths: { 
     jQuery: 'common/libs/jquery/jquery-min', 
     TinyMCE: 'common/libs/tinyMCE/tiny_mce', 
    }, 
    shim: { 
     'jQuery': { 
      deps:['TinyMCE'], 
      exports: '$', 
     }, 
     'jQueryUi': { 
      deps: ['jQuery'] 
     }, 
     'jQuerySelectmenu': { 
      deps: ['jQuery', 'jQueryUi'] 
     }, 
     'jQueryAutosize': { 
      depts: ['jQuery'] 
     }, 
     'Underscore': { 
      exports: '_' 
     }, 
     'Backbone': { 
      deps: ['Underscore', 'jQuery'], 
      exports: 'Backbone' 
     } 
    } 
}); 

require(['common/src/app'], function (App) { 
    App.initialize(); 
}); 
+1

require.config() r.js. हो पार्स नहीं कर रहा है आपको r.js. के लिए कॉन्फ़िगरेशन फ़ाइल बनाना चाहिए यहां देखें: http://stackoverflow.com/questions/11323414/i-am-struggling-with-the-requirejs-optimizer-and-non-amd-modules/11454409#11454409 – devundef

+1

बिंदु पर नहीं, लेकिन मैंने अभी आपको खोजा अंडरस्कोर के बजाय [lodash] (https://github.com/bestiejs/lodash/) का उपयोग कर सकते हैं, और अंडरस्कोर शिम खो सकते हैं। –

+0

आप वास्तव में jquery से पहले लोड होना चाहते हैं? – devundef

उत्तर

11

यह समस्या पहले से ही r.js 2.1.11

पर तय हो गई है सिर्फ निर्माण config में

wrapShim: true जगह।

github issue

configuration example

+1

जारी करने के लिए उचित लिंक: https://github.com/jrburke/r.js/issues/623 – Victor

6

मैं हाल ही में है कि मुझे एक छोटे से था कुछ इसी तरह के मुद्दों में भाग स्टम्प्ड। मैं TinyMCE कोड से परिचित नहीं हूं, लेकिन मुझे लगता है कि आपने इसे shimmed नहीं किया है।

शिम्स (आमतौर पर) एएमडी शैली पुस्तकालयों पर निर्भर नहीं हो सकते हैं। सुनिश्चित नहीं है कि TinyMCE एएमडी मॉड्यूल शैली श्रेणी में आता है या नहीं, लेकिन अगर ऐसा होता है .. आप परेशानी में हैं। यदि ऐसा नहीं होता है, तो आपको इसे भी तैरने की ज़रूरत है।

https://github.com/jrburke/requirejs/wiki/Upgrading-to-RequireJS-2.0#wiki-shim

"शिम" config के लिए महत्वपूर्ण चेतावनी:

केवल shimmed स्क्रिप्ट के लिए निर्भरता, या) कोई निर्भरता है और कॉल परिभाषित करते हैं (कि एएमडी पुस्तकालयों वे के बाद के रूप में अन्य "शिम" मॉड्यूल का उपयोग एक वैश्विक भी बनाएं (जैसे jQuery या lodash)। अन्यथा, यदि आप एक निर्माण के बाद एक एएमडी मॉड्यूल को एक शिम कॉन्फ़िगरेशन मॉड्यूल के लिए निर्भरता के रूप में उपयोग करते हैं, तो निर्माण निष्पादन में shimmed कोड के बाद तक AMD मॉड्यूल का मूल्यांकन नहीं किया जा सकता है, और एक त्रुटि उत्पन्न होगी। अंतिम फिक्स वैकल्पिक shdmed कोड को वैकल्पिक एएमडी परिभाषित() कॉल करने के लिए अपग्रेड करना है।

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