2014-12-19 65 views
4

我有一個網站,其中包含一些通過script標籤的第三方js模塊。我需要添加lodashunderscore我的代碼,但如果我只是從CDN添加這樣的:如何在網站上正確包含lodash /下劃線與衝突庫?

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.min.js"></script> 

然後寫的不好庫死可怕的死亡,因爲他們期望_別的東西。我知道lodash/underscore有一些所謂「無衝突」的模式,這需要js代碼被執行:

var lodash = _.noConflict(); 

但需要地方執行該代碼,這真的很難,我保證它的執行之前所有書面糟糕的庫。是否有包含lodash已經在noconflict模式的簡單方法,所以我不需要搜索一個安全的地方手動啓用noconflict模式?像lodash.min.noconflict.js

+1

沒有想法。如果您發現此問題,請將其作爲答案發布。 – Ved 2014-12-19 11:28:41

回答

3

只要有手工方法之前沒有相關的異步腳本,它應該永遠工作:

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.min.js"></script> 
<script> 
_u = _.noConflict(); // lets call ourselves _u 
</script> 

這沒有什麼區別,如果設置/ _之前或之後,該使用其他腳本。 (lodash會記住_的最後一個設置,並在_.noConflict()調用中恢復它。)

但是,如果在此之前的腳本是異步的,那麼它們總有可能在這兩個腳本之間執行。您必須使用AMD或將手動設置與lodash相同的腳本組合起來以避免使用異步腳本進行競賽。

+0

截至目前,最新的CDN-ed鏈接是:https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.15.0/lodash.min.js OP可能會選擇更新答案:) – kmonsoor 2016-09-05 07:58:53

1

介紹最新CDN-ED現在是4.16.6版本:

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.16.6/lodash.min.js"></script> 
<script> 
_u = _.noConflict(); // lets call ourselves _u 
</script> 

我希望它可以幫助別人。