文章 文章 posts

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

在现代前端开发中,工具函数库可以大幅提升开发效率,避免重复造轮子。本文将对比四个常见的工具库:Lodash、Lodash-es、es-toolkit、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 用户,且不需要太多 API,Radash 是更轻量的选择。