# Lodash、Lodash-es、es-toolkit 与 Radash 对比

URL: https://caijiao.org/posts/2
Source: docs/posts/2.md
Description: 介绍 Lodash、Lodash-es、es-toolkit、Radash 四个常见前端工具函数库的特点、优缺点、打包体积对比，帮助你选择合适的工具链。

在现代前端开发中，工具函数库可以大幅提升开发效率，避免重复造轮子。本文将对比四个常见的工具库：[Lodash](/lodash/)、Lodash-es、es-toolkit、[Radash](/radash/)，从特点、优劣势和打包体积角度进行分析。

## 📖 1. 库介绍

### Lodash

- 最经典的 JavaScript 工具函数库，功能覆盖数组、对象、函数、字符串等。
- 优点  
  - API 全面，生态成熟  
  - 文档、社区丰富  
  - 兼容性好，几乎所有项目都能用  
- 缺点  
  - 默认 CommonJS 模块，不支持 tree-shaking  
  - 整体引入会导致打包体积较大  

### Lodash-es

- Lodash 的 ESM 模块化版本，API 与 Lodash 完全一致。
- 优点  
  - 支持 `import { fn } from 'lodash-es'`  
  - Tree-shaking 更友好，实际打包体积更小  
- 缺点  
  - 维护频率不如 lodash 主仓库  
  - 对旧环境兼容性略差  

### es-toolkit

- 新兴的现代工具库，定位为 lodash 的轻量替代品。
- 优点  
  - 全部基于 ESM，天然支持 tree-shaking  
  - 使用 TypeScript 编写，类型提示完善  
  - API 设计简洁，覆盖常用场景  
- 缺点  
  - 社区规模较小，生态不如 lodash  
  - 功能覆盖面有限  

### Radash

- 灵感来源于 lodash 的现代工具库，更贴合 TypeScript 项目。
- 优点  
  - TypeScript 一等公民，类型体验极佳  
  - 提供一些异步和实用函数，是 lodash 没有的  
  - 体积小，现代化 API  
- 缺点  
  - 功能不如 lodash 全面  
  - 社区规模小，文档与示例相对有限  

## 📦 2. 打包体积对比

在 Vite 项目中引入后打包测试结果（仅供参考）：  

| 库         | 引入方式                     | 体积趋势 |
|------------|-----------------------------|----------|
| lodash     | `import _ from 'lodash'`    | 200KB+   |
| lodash-es  | `import { cloneDeep } ...`  | 10KB     |
| es-toolkit | `import { cloneDeep } ...`  | 10KB     |
| Radash     | `import { clone } ...`      | 8KB      |

👉 结论：lodash-es、es-toolkit、Radash 都支持 tree-shaking，体积明显小于 lodash。

## 📌 3. 总结与选择建议

- 需要功能全面，团队熟悉 lodash → `lodash-es`  
- 新项目，追求体积小，现代化 ESM → `es-toolkit`  
- 偏好 TypeScript，想要现代简洁 API → `Radash`  
- 历史项目或兼容旧环境 → `lodash`  

## ✅ 最佳实践

1. 在新项目中 避免直接使用 lodash 整包。  
2. 推荐使用 lodash-es 或 es-toolkit 作为替代。  
3. 如果你是 [TypeScript](/ts/) 用户，且不需要太多 API，Radash 是更轻量的选择。
