据我了解,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/