javascript - 如何在具有冲突库的网站上正确包含 lodash/下划线?

标签 javascript html underscore.js lodash

我有一个网站,其中包含许多通过 script 标记的第三方 js 模块。我需要为我的代码添加 lodashunderscore,但如果我只是像这样从 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/

相关文章:

javascript - 向对象添加 Google Chart 功能

javascript - 如何在 typescript 中使用 js 库?

javascript - 打开任何模型/灯箱时隐藏 YouTube

javascript - 输入 jQuery 中 'ä' ,'ö' ,'ü' 的处理

javascript - Svg 线未显示在谷歌图表上?

javascript - 将数据从 ASp.NET MVC Controller 传递到 JavaScript 函数

javascript - 如何打开一个新的 html 页面以及单击一个链接

javascript - 如何在用户滚动到页面底部时启动 jQuery 事件?

javascript - 如何在 JavaScript 中将字符串树解析为数组

javascript - 如果对象包含 JavaScript 中的字母,如何返回对象