【问题标题】:Does Lodash bundle/include Underscore?Lodash 是否捆绑/包含下划线?
【发布时间】:2022-01-10 20:02:26
【问题描述】:

据我了解,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 的副本?

【问题讨论】:

标签: javascript lodash underscore.js


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2016-01-05
    • 2017-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多