es-toolkit 现代 JavaScript 工具库
🚀 核心优势
- 性能卓越:在现代 JS 运行时中比其他库快 2-3 倍
- 超小体积:比替代方案减少 97% JavaScript 代码量
- 全面兼容:支持 Node.js, Deno, Bun 和所有浏览器环境
- 类型安全:内置 TypeScript 类型支持
- 可靠稳定:100% 测试覆盖率保障
- 广泛采用:被 Storybook、Recharts、ink、CKEditor 等知名项目使用
📦 安装与使用
Node.js
npm install es-toolkit
# 或
pnpm add es-toolkit
# 或
yarn add es-toolkit
import { sum } from 'es-toolkit';
sum([1, 2, 3]); // 6
Deno
deno add @es-toolkit/es-toolkit
import { sum } from '@es-toolkit/es-toolkit';
sum([1, 2, 3]); // 6
Bun
bun add es-toolkit
浏览器
<!-- 通过 jsdelivr -->
<script src="https://cdn.jsdelivr.net/npm/es-toolkit@%5E1"></script>
<script>
const arr = _.chunk([1, 2, 3, 4, 5, 6], 3);
</script>
<!-- 通过 esm.sh -->
<script type="importmap">
{ "imports": { "es-toolkit": "https://esm.sh/es-toolkit@%5E1" } }
</script>
<script type="module">
import { chunk } from 'es-toolkit';
chunk([1, 2, 3, 4, 5, 6], 3);
</script>
📊 包体积对比
功能 | es-toolkit | lodash-es | 差异 |
---|---|---|---|
sample | 88 bytes | 2000 bytes | -95.6% |
difference | 91 bytes | 3190 bytes | -97.2% |
sum | 152 bytes | 413 bytes | -63.2% |
debounce | 144 bytes | 1400 bytes | -89.7% |
// 测量方法示例
import { chunk } from 'es-toolkit';
console.log(chunk); // 通过 esbuild 分析大小
⚡ 性能对比
函数 | es-toolkit | lodash-es | 提升倍数 |
---|---|---|---|
omit | 4,767,360次/s | 403,624次/s | 11.8× |
pick | 9,121,839次/s | 2,663,072次/s | 3.43× |
differenceWith | 9,291,897次/s | 4,275,222次/s | 2.17× |
测试环境:MacBook Pro 14-inch (M1 Max, 2021)
🔄 Lodash 兼容性
// 使用兼容层实现 100% Lodash API 匹配
import { chunk } from 'es-toolkit/compat';
chunk([1, 2, 3, 4], 0); // [] 结果与 Lodash 完全一致
设计原则
✅ 100% 通过 Lodash 官方测试用例
✅ 完整覆盖 @types/lodash
类型定义
🚫 不支持的场景:
- 隐式类型转换(如空字符串转数字)
- 修改内置对象原型
- JavaScript 多领域(realm)处理
- Seq 方法链式调用
实现状态摘要
类别 | 完成率 | 状态 |
---|---|---|
Array | 100% | ✅ |
Collection | 100% | ✅ |
Function | 95% | ✅ |
Lang | 90% | ✅ |
Util | 85% | 📝 |
✅ 已完成 📝 审核中 🚫 未实现
🎯 总结
核心价值
es-toolkit 通过现代化实现提供了显著的性能优势和小体积优势,同时保持与 Lodash 的高度兼容性,是传统工具库的理想替代品。其模块化设计和类型安全特性使其成为现代 JavaScript 开发的优选工具库。
推荐场景:新项目首选工具库 | Lodash 迁移替代方案 | 性能敏感型应用