2012-07-13 92 views
12

R.js沒有加載我的墊片,從而jQuery是tinyMCE的前加載,它加載之前的小被初始化。我怎樣才能獲得墊片工作?:Require.js + R.js優化忽略沉

集結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()不解析BE r.js.你應該爲r.js創建一個配置文件。看看這裏:http://stackoverflow.com/questions/11323414/i-am-struggling-with-the-requirejs-optimizer-and-non-amd-modules/11454409#11454409 – devundef 2012-07-13 22:40:10

+1

不上點,但我剛剛發現你可以使用[lodash](https://github.com/bestiejs/lodash/)而不是下劃線,並丟失下劃線墊片。 – 2012-07-29 04:27:49

+0

你真的想要jquery之前加載小? – devundef 2012-08-24 18:16:14

回答

11

此問題已固定在r.js 2.1.11

只需將

wrapShim: true在構建配置。

github issue

configuration example

+1

正確鏈接問題:https://github.com/jrburke/r.js/issues/623 – Victor 2014-04-15 08:08:33

6

我遇到了一些類似的問題在最近,讓我一點點難倒。我對TinyMCE代碼並不熟悉,但是我發現你還沒有完全清除它。

墊片(一般)不能依賴於AMD樣式庫。不知道TinyMCE是否屬於AMD模塊風格類別,但如果它確實如此......您遇到了麻煩。如果沒有,你還需要補充它。

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

爲「中間」配置重要的警告:

只能使用其他的「墊片」模塊,之後他們依賴於墊高的腳本,或者說有沒有依賴性,並調用定義()AMD庫也創建一個全局的(如jQuery或lodash)。否則,如果您使用AMD模塊作爲shim配置模塊的依賴項,則在構建之後,只有在構建中的shimmed代碼執行後才能評估AMD模塊,並且會發生錯誤。最終的解決方案是升級所有shimmed代碼以具有可選的AMD define()調用。