2013-02-19 102 views
1

什麼是確定的第三方庫(JQuery的/下劃線/骨幹)的模塊,並利用這些作爲依賴的好處?Require.js第三方庫的依賴

require(["jquery", "underscore"], function($, _) { 
    // Use $ and _ in here 
}); 

下劃線例如創建一個全局「_」變量,我可以很容易地在函數內使用上面,假定下劃線之前該功能包括在內。

爲了通過要求使用,下劃線需要的代碼進行修改,以返回一個值,或一個墊片限定。爲什麼打擾,當我可以通過腳本標籤包含它?

我得到它提供了一個間接一定的水平,讓我去其他依賴映射到這些相同的變量,並將其本地範圍的該功能。但是,我不認爲這對構成應用程序核心的這些類型的第三方庫非常有用。

回答

2

建立一些應用程序與骨幹/ requireJs我看不出有什麼缺點,在建設骨幹網的應用與requireJs,其中主要的依賴關係是通過一個老同學的腳本標記加載簡單經過。

你必須擺在首位反正加載這個要求,它使用的大部分的模塊,你可能永遠不會與另一個框架交換它。所以在每個模塊中都沒有代價。

0

您不必變化在AMD加載器來使用圖書館。

require.config({paths:{underscore:'//some.cdn/path/to/underscore.js'}}) 

require(["jquery", "underscore"], function($ /*, note that we don't override _ here */) { 
    // Use AMD $ and global _ in here 
}); 
+0

我同意,對於JQuery你不這樣做,因爲它是AMD兼容的。但是,Underscore不是,並創建了一個全局_變量。我想我不明白你定義的下劃線路徑配置是如何工作的,除非underscore.js被修改爲返回結果。 – Steve 2013-02-20 13:10:40

+0

@Steve我建議使用普通的JavaScript版本的Underscore。 'paths'中的條目簡化了一件事情 - 而不是輸入整個URL,只需在'require'調用中輸入'underscore'即可。但是,您不使用返回值,而只是使用由純JS下劃線設置的全局_ **。換句話說,「使用AMD來計算加載時間,但是一旦加載就使用全局下劃線對象」 – ddotsenko 2013-02-25 06:54:15