xDocxDoc
AI
前端
后端
iOS
Android
Flutter
AI
前端
后端
iOS
Android
Flutter
  • ES-Toolkit

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-toolkitlodash-es差异
sample88 bytes2000 bytes-95.6%
difference91 bytes3190 bytes-97.2%
sum152 bytes413 bytes-63.2%
debounce144 bytes1400 bytes-89.7%
// 测量方法示例
import { chunk } from 'es-toolkit';
console.log(chunk); // 通过 esbuild 分析大小

⚡ 性能对比

函数es-toolkitlodash-es提升倍数
omit4,767,360次/s403,624次/s11.8×
pick9,121,839次/s2,663,072次/s3.43×
differenceWith9,291,897次/s4,275,222次/s2.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 方法链式调用

实现状态摘要

类别完成率状态
Array100%✅
Collection100%✅
Function95%✅
Lang90%✅
Util85%📝

✅ 已完成 📝 审核中 🚫 未实现

🎯 总结

核心价值

es-toolkit 通过现代化实现提供了显著的性能优势和小体积优势,同时保持与 Lodash 的高度兼容性,是传统工具库的理想替代品。其模块化设计和类型安全特性使其成为现代 JavaScript 开发的优选工具库。

推荐场景:新项目首选工具库 | Lodash 迁移替代方案 | 性能敏感型应用

最后更新: 2025/8/26 10:07