2013-10-16 60 views
0

我正在通過this backbone教程。這裏使用shim和amd版本的下劃線和骨幹網來加載腳本文件。requireJS:shim或amd版本的主幹,下劃線

背後的原因是shim dons不會異步加載腳本文件,但amd版本允許異步加載jquery,underscore和backbone。

我也在螢火蟲看到它是真的。所以我的問題是:哪種方法實際上對實際/生產應用有好處。

+2

http://www.sitepoint.com/understanding-requirejs-for-effective-javascript-module-完整的配置指南加載/它是有幫助的 –

回答

1

使用require.js。它在管理大規模JavaScript應用程序中的依賴方面非常強大。

AMD

異步模塊定義(AMD)API指定用於限定,使得模塊及其依賴可以異步加載的模塊的機制。這尤其適用於模塊的同步加載會導致性能,可用性,調試和跨域訪問問題的瀏覽器環境。

define.amd財產

要允許一個明確的指標,一個全球性的定義函數(如腳本所需SRC瀏覽器加載)符合AMD API,任何全局定義函數應該叫物業「AMD 「其價值是一個客體。這有助於避免與任何其他現有JavaScript代碼發生衝突,這些JavaScript代碼可能定義了不符合AMD API的define()函數。

此時未指定define.amd對象內的屬性。實現者可以使用它來通知除實現支持的基本API之外的其他功能。

存在具有對象值的define.amd屬性表示與此API一致。如果有另一個版本的API,它可能會定義另一個屬性,如define.amd2,以指示符合該版本API的實現。

的如何可以針對允許環境中的加載模塊的多於一個版本的實施方式來限定的一個例子:

define.amd = { 
    multiversion: true 
    }; 

最小定義:

define.amd = {}; 

管理從屬文件的順序

RequireJS使用Asynchronous Module Loading (AMD)來加載文件。每個依賴模塊將通過給定順序的異步請求開始加載。儘管考慮了文件順序,但由於異步性質,我們無法保證第一個文件在第二個文件之前被加載。因此,RequireJS允許我們使用shim配置來定義需要按正確順序加載的文件序列。讓我們看看我們如何在RequireJS中創建配置選項。

requirejs.config({ 
    shim: { 
    'source1': ['dependency1','dependency2'], 
    'source2': ['source1'] 
    } 
}); 

RequireJS允許我們使用config()函數提供配置選項。它接受一個名爲shim的參數,我們可以使用它來定義強制的依賴關係序列。你可以找到在RequireJS API documentation.

參考文獻1)http://www.sitepoint.com/understanding-requirejs-for-effective-javascript-module-loading/

2)https://github.com/amdjs/amdjs-api/wiki/AMD

+0

它是這樣的東西'source2'不會開始下載,直到所有'source1'' dependency1','dependency2'加載?訂單是否重要? – manish

+1

在此設置與源1相同的順序取決於依賴關係1和依賴關係2,所以首先它將加載源代碼2開始加載 順序問題當您的函數調用從另一個腳本完成時 如果您認爲命令在您的項目中無關緊要,需要使用 墊片用於提供訂單 –