我有一个网站,其中包含许多通过 script
标记的第三方 js 模块。我需要为我的代码添加 lodash
或 underscore
,但如果我只是像这样从 CDN 添加它:
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.min.js"></script>
然后写得不好的库会死得很惨,因为他们希望 _
是别的东西。我知道 lodash
/underscore
有一种叫做“无冲突”模式的东西,需要执行 js
代码:
var lodash = _.noConflict();
但是这段代码需要在某个地方执行,我真的很难确保它在所有写得不好的库之前执行。在无冲突模式下包含 lodash
是否有任何简单的方法,所以我不需要搜索安全的地方来手动启用无冲突模式?像 lodash.min.noconflict.js
吗?
最佳答案
只要在手动方法之前没有相关的异步脚本,它应该总是有效的:
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.20/lodash.min.js"></script>
<script>
_u = _.noConflict(); // lets call ourselves _u
</script>
其他脚本在此之前或之后设置/使用 _ 都没有区别。 (lodash 会记住 _ 的最后设置,并在调用 _.noConflict() 时恢复它。)
但是如果在此之前的脚本是异步的,那么它们总是有可能被允许在这两个脚本之间执行。您将不得不使用 AMD 或将手动设置组合到与 lodash 相同的脚本中,以避免与异步脚本竞争。
关于javascript - 如何在具有冲突库的网站上正确包含 lodash/下划线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27561252/