javascript - Lodash 是否捆绑/包含 Underscore?

标签 javascript lodash underscore.js

据我了解,JavaScript 库 lodash 的灵感来自 underscore.js 并实现了类似的 API。根据维基百科,它是 underscore.js 的一个分支。

在我的应用程序中,我使用了最新版本的 Lodash (4.17.21)。我使用的一些安全软件已标记此版本的 Lodash 捆绑了包含安全问题的旧版本的 underscore.js。

在 GitHub 中,我可以在 Lodash 存储库的以下子文件夹中找到旧版本的 Underscore.js: https://github.com/lodash/lodash/tree/4.17/vendor/underscore

我已经 grep 了源代码,我的印象是 Lodash 捆绑 underscore.js 只是作为引用和某种测试。当我查看 Lodash/Underscore 实现的特定功能时,实现完全分开。

有谁知道为什么 Lodash github 帐户还包含 Underscore 的副本?

最佳答案

全面披露:我目前正在维护 Underscore。

您正确地推断 Lodash 不依赖于 Underscore,至少在生产环境中不依赖。相反,它是 Underscore 的一个分支,随着时间的推移已经在很大程度上偏离了原始库,以至于您不再认识原始库。如果您查看 early commit history of Lodash ,你可以看到作者仍在合并来自 Underscore 的更改。这在 Underscore 1.3.3 之后停止了。

Lodash 与 Underscore 的区别之一是其源代码急剧膨胀(比较 unminified Lodash (531 kB)unminified Underscore (66.8 kB) )。我认为这部分解释了为什么 Lodash 现在只发布罕见的安全更新;维护面变得太大。阅读 Lodash 代码,您还会发现很难追踪任何给定函数的工作原理。

vendor 目录应该用于测试和性能比较。你仍然可以看到这个 here 的痕迹和 here . Underscore 1.8.3 已有七年历史,这清楚地表明性能测试已经很长时间没有更新了。

无论如何,您的安全扫描软件过于谨慎了。 Lodash 最初基于 Underscore,但不依赖它。

关于javascript - Lodash 是否捆绑/包含 Underscore?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70658283/

相关文章:

javascript - 如何重新加载 AngularJS 部分模板?

javascript - 如果数组中只有一个对象,Lodash 将返回错误的归约结果

javascript - 正则表达式忽略捕获组内的捕获组

javascript - 没有输入字段时如何捕捉键盘?

javascript - 有一群人,如果他们超过 2 岁,则需要使用 lodash 降低他们的年龄

javascript - 如何使用下划线将数组或对象插入一个数组?

javascript - javascript中的python字符串格式

javascript - 根据项目的一个属性获取项目的数组索引

javascript - 为什么 WordPress 中的排队脚本不起作用?

javascript - 使用 Vue.js 如何刷新使用 lodash 去抖动的方法?