【问题标题】:How to correctly include lodash/underscore on website with conflicting libs?如何在具有冲突库的网站上正确包含 lodash/下划线?
【发布时间】:2015-02-18 02:33:13
【问题描述】:

我有一个网站,其中包含许多通过 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

【问题讨论】:

  • 不知道。如果你找到这个,请将其发布为答案。

标签: javascript html underscore.js lodash


【解决方案1】:

只要手动方法之前没有相关的异步脚本,它应该总是有效的:

<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 相同的脚本中,以避免与异步脚本竞争。

【讨论】:

【解决方案2】:

最新的 CDN 版本是 4.17.15 :)

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

【讨论】:

    【解决方案3】:

    如果你已经加载了lodash的cdn脚本标签,你可以在另一个js文件中直接使用“_”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-06
      • 1970-01-01
      • 1970-01-01
      • 2014-01-27
      • 1970-01-01
      • 2014-07-14
      相关资源
      最近更新 更多