2014-10-20 156 views
0

我是新來RequireJS,我試圖瞭解它的使用背後的邏輯...與requirejs加載仄模塊

我有HTML腳本標籤

requirejs.config(
    {shim: { 
     'zepto': ['//cdnjs.cloudflare.com/ajax/libs/zepto/1.1.4/zepto.min.js'], 
     'js/zepto.addon.min' : 'zepto', 
     'js/zepto.swipeslide' : ['zepto', 'js/zepto.addon.min'] 
    }} 
    ); 

define(['//cdnjs.cloudflare.com/ajax/libs/zepto/1.1.4/zepto.min.js','js/zepto.addon.min','js/zepto.swipeslide'],function(){ 
    console.log('this', this, 'arguments', arguments); 
});` 

我之間下面的腳本只是試圖在插件之前加載必要的zepto文件。但是我得到一個

Uncaught Error: Mismatched anonymous define() module: function(){ console.log('this', this, 'arguments', arguments); }

我找了下requirejs文檔的錯誤,但它並沒有說清楚是什麼和爲什麼發生這種情況。

你們能否以外行人的態度對我進行分解發生了什麼事?

回答

2

該設置沒有多大意義。您應該定義您的路徑,定義您的墊片,然後按名稱要求這些模塊。

requirejs.config({ 
    // setup global dependencies 
    shim: { 
     'addon' : 'zepto', 
     'swipeslide' : ['zepto', 'addon'] 
    }, 
    // define module paths 
    paths: { 
     'zepto': '//cdnjs.cloudflare.com/ajax/libs/zepto/1.1.4/zepto.min', 
     'addon': 'js/zepto.addon.min', 
     'swipeslide': 'js/zepto.swipeslide' 
    } 
}); 

define(['zepto', 'addon', 'swipeslide'], function($) { 
    console.log('this', this, 'arguments', arguments); 
}); 
+0

所以你說「墊片」就像「別名」,當你定義它們時,你的腳本的依賴鏈接? – Kendall 2014-10-20 21:00:31

+1

也許吧?我不這麼認爲。 'paths'是窗體'module:path'的別名。 'shims'是形式'module:[dependencies]'的依賴定義。墊片用於需要以相對於其他依賴性的特定順序需要的軟件包。 – Mathletics 2014-10-20 21:03:22

+0

@Mathletics ....我試過你的代碼,但由於某種原因,函數中的參數都返回「未定義」...不需要範圍的腳本變量? – Kendall 2014-10-20 23:43:59