gri*_*yvp 8 html javascript underscore.js lodash
我有一个网站,通过script标签包含许多第三方js模块.我需要添加lodash或underscore代替我的代码,但如果我只是从CDN添加它,就像这样:
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
然后写得很糟糕的libs会死于可怕的死亡,因为他们希望_成为别的东西.我知道lodash/ underscore有一种称为"无冲突"的模式,需要js执行代码:
var lodash = _.noConflict();
Run Code Online (Sandbox Code Playgroud)
但是这个代码需要在某个地方执行,而且我很难确保它在所有编写错误的库之前执行.是否有任何简单的方法包含lodash已经在noconflict模式,所以我不需要搜索一个安全的地方手动启用noconflict模式?喜欢lodash.min.noconflict.js?
只要在手动方法之前没有相关的异步脚本,它应该始终有效:
<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>
Run Code Online (Sandbox Code Playgroud)
如果其他脚本在此之前或之后设置/使用_则没有区别.(lodash会记住_的最后一个设置,并在_.noConflict()调用中恢复它.)
但是如果之前的脚本是异步的,则总是有可能允许它们在这两个脚本之间执行.您必须使用AMD或将手动设置与lodash结合在一起,以避免与异步脚本的比赛.