我有一个网站,其中包含许多通过script
标记的第三方js模块。我需要为我的代码添加lodash
或underscore
,但如果我只是从CDN添加它,就像这样:
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.min.js"></script>
然后写得很糟糕的libs会死于可怕的死亡,因为他们希望_
成为别的东西。我知道lodash
/ underscore
有一种称为“无冲突”的模式,需要执行js
代码:
var lodash = _.noConflict();
但是这个代码需要在某个地方执行,而且我很难确保它在所有编写错误的库之前执行。是否有任何简单的方法将lodash
包含在noconflict模式中,所以我不需要搜索安全的地方来手动启用noconflict模式?比如lodash.min.noconflict.js
?
答案 0 :(得分:9)
只要在手动方法之前没有相关的异步脚本,它就应该始终有效:
<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结合在同一个脚本中,以避免使用异步脚本进行比赛。
答案 1 :(得分:2)
&#34;最新&#34; CDN的版本是4.17.5 :)
<script scr="//cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js"> </script>
<script>
_u = _.noConflict();
</script>
答案 2 :(得分:0)
如果你已经加载了lodash的cdn脚本标签,你可以直接在另一个js文件中使用“_”。