2014-10-30 85 views
2

我不確定是什麼原因造成的,但jquery-ui在優化後似乎不起作用。RequireJS加載jquery-ui優化後失敗

沒有優化,項目運行良好。 $包含$.ui。 (我們稱之爲開發)

優化後,取決於jquery-ui的函數失敗,因爲$.ui不存在。

我一直插科打諢與墊片,需要好幾個小時,但結果始終是相同的(或者更糟,$甚至沒有工作,但它仍處於非優化版本的作品。

什麼片邏輯的我失去了


requirejs.config({ 
    baseUrl  : 'js', 
    waitSeconds : 10, 
    urlArgs  : 'cache='+Date.now(), 

    paths: { 
     "conf"    : "remix/config", 
     "jquery"   : "lib/jquery", 
     "jqueryUi"   : "lib/jquery.ui", 
     "domReady"   : "lib/domReady", 
     "bootstrap"   : "lib/bootstrap", 
     "jsviews"   : "lib/jsviews" 
    }, 

    // I've had many configurations. 
    // Basically, develop almost always works, optimized never works. 
    shim: { 
     "jqueryUi" : { 
      deps  : ['jquery'] 
     }, 
     "jsviews" : { 
      deps  : ['jqueryUi'] 
     }, 
     "bootstrap" : { 
      deps  : ['jsviews'] 
     } 
    } 

}); 

require(['domReady!', 'jsviews', 'jqueryUi', 'bootstrap'], function() { 
    console.log($); 
    // Develop: $.ui exists 
    // Optimized: $ exists, $.ui does not. 
    // (And jsviews only in some modules.) 
}); 

回答

-1

根據答案:https://stackoverflow.com/a/17536078/2463365和refernced教程:Load jQuery UI with requireJS 我剛剛加入exports: '$'

shim: { 
    "jqueryUi" : { 
     exports  : '$', 
     deps  : ['jquery'] 
    }, 

它的工作原理。

+1

僅僅添加「出口」設置不會解決問題中描述的問題。 – Louis 2014-12-01 12:59:58

+0

我已經回到這個問題在我的情況下,問題是由第二個入口直接調用未優化的模塊。 1.我加載了requirejs; 2.我已經加載config requirejs; 3.我已經直接運行了一些使用utils模塊的腳本; 4.我運行了腳本,需要縮小構建腳本並在其範圍內調用主入口點。 所以我最終得到了jquery的兩個實例(第一個作爲3的依賴關係,未定義;第二個來自第3頁的已編譯的優化腳本)。 當我重構代碼並刪除p.3後,我的問題就變得簡單了。 – Kiryl 2014-12-10 07:50:03

+0

@Kiryl我不太明白。你能更新你的答案嗎? – Redsandro 2015-01-27 20:14:18