es-toolkit:现代JavaScript工具库
es-toolkit 是一个现代 JavaScript 工具库,旨在提供高性能、类型安全的替代方案,直接与 Lodash 和 Underscore.js 竞争。它声称在包大小和性能方面有显著改进。
背景与需求
历史上,JavaScript 无法完全满足开发者社区的需求,这导致了 Lodash、jQuery 和 MomentJS 等库的兴起。这些库提供了 JavaScript 语言中缺失的实用功能。尽管 JavaScript 的能力近年来有所扩展,许多开发者仍然使用这些第三方库,因为它们可以提供更好的性能、持续更新以及熟悉的接口。
包大小对比
从包大小来看,es-toolkit 表现出显著的优势,主要得益于其函数之间的独立性,而 Lodash 的函数相互依赖,限制了导入单个方法时的优化。
| 功能 | es-toolkit@0.0.1 | lodash-es@4.17.21 | 差异 |
|---|---|---|---|
| sample | 88 字节 | 2000 字节 | -95.6% |
| difference | 91 字节 | 3190 字节 | -97.2% |
| sum | 152 字节 | 413 字节 | -63.2% |
| debounce | 144 字节 | 1400 字节 | -89.7% |
| throttle | 110 字节 | 1460 字节 | -92.5% |
| pick | 657 字节 | 3860 字节 | -83.0% |
| zip | 797 字节 | 1790 字节 | -55.5% |
性能对比
es-toolkit 在性能上的提升更为显著,特别是在处理大数据集时,对 JavaScript 应用程序有实际影响。
| 功能 | es-toolkit@0.0.1 | lodash-es@4.17.21 | 差异 |
|---|---|---|---|
| omit | 4,767,360 次 | 403,624 次 | 11.8倍 |
| pick | 9,121,839 次 | 2,663,072 次 | 3.43倍 |
| differenceWith | 9,291,897 次 | 4,275,222 次 | 2.17倍 |
| difference | 10,436,101 次 | 5,155,631 次 | 2.02倍 |
| intersectionWith | 8,074,722 次 | 3,814,479 次 | 2.12倍 |
| intersection | 9,999,571 次 | 4,630,316 次 | 2.15倍 |
| unionBy | 6,435,983 次 | 3,794,899 次 | 1.69倍 |
| union | 5,059,209 次 | 4,771,400 次 | 1.06倍 |
| dropRightWhile | 7,529,559 次 | 5,606,439 次 | 1.34倍 |
| groupBy | 5,000,235 次 | 5,206,286 次 | 0.96倍 |
兼容性层
es-toolkit 提供了 Lodash 的兼容层,帮助开发者进行迁移。要使用兼容层,只需将导入路径从 es-toolkit/array 改为 es-toolkit/compat。兼容层可能会对包大小和性能产生轻微影响,因此在使用前建议对比两者的文档。
开发与许可
es-toolkit 由 Toss 开发,并采用 MIT 许可证发布。为了确保兼容性,它还对 Lodash 的测试进行了修改。
使用方法
要开始使用 es-toolkit,可以访问其 GitHub 仓库,或通过 CLI 使用 npm i es-toolkit 命令直接安装。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。