摘要:曾经的lodash是前端工具库里的王者——在 ES5 时代,它用 300+ 个贴心的小函数把“写 JavaScript”这件难事变成了乐高拼插:深拷贝、去重、防抖、节流……只要记住一个下划线,就能少写 100 行兼容代码。
曾经的 lodash 是前端工具库里的王者——在 ES5 时代,它用 300+ 个贴心的小函数把“写 JavaScript”这件难事变成了乐高拼插:深拷贝、去重、防抖、节流……只要记住一个下划线,就能少写 100 行兼容代码。
但技术一直在往前滚,如今 ES6+ 原生能力越来越全,它也该歇歇了。
如果你的项目还在 npm i lodash,不妨花 5 分钟认识下面 4 个“最强替代品”——它们不是来“黑”老大哥,而是站在新基础设施上,把同样的事做得更轻、更快、更友好。
定位:官方 ESM 分支,API 与 lodash 完全一致,仅把代码切成 ES Module。
优势:
体积直接腰斩:全量 24 kB → 12 kB(Tree-Shaking 后还能再掉 30%)。迁移成本=0,全局替换字符串即可,老单测一行不改。浏览器下限依旧 IE11,老项目放心吃。怎么用:
npm uninstall lodash @types/lodashnpm i lodash-es# 原代码import { debounce } from 'lodash'# 全局替换后import { debounce } from 'lodash-es'打包工具会自动摇掉没用到的函数,“下楼梯式”瘦身,风险极低。
定位:重新实现 + 100% 兼容层,让你“今天卸载 lodash,明天上线新需求”。
优势:
提供 es-toolkit/compat 子包,函数签名与 lodash 镜像级一致;官方 codemod 脚本 90% 自动替换。性能 ×2-3,体积 −70%;单测通过率 100%,Twitter 上已有团队 24h 内全量迁移。原生 TypeScript,零 any,路径推断可到第四层:get(obj, 'a.b.c.d') 返回类型就是 string | undefined。怎么用:
npm i es-toolkit# 一键迁移npx @es-toolkit/codemod src/想渐进升级?先上 compat,再把冷门函数逐步换成“原生版”即可。
定位:零依赖 + ES2020 全新算法,把“冷启动 50 ms”的 Edge Function 当成第一用户。
优势:
性能怪兽:benchmark 普遍 ×3-7,包体积 −75%。类型体验拉满:零 any,错误优先风格,tryit / parallel / retry 一把梭。维护活跃:Radash 官方已归档,Radashi 社区 nightly 发版,RFC 公开投票。怎么用:
npm i radashi# API 全新,但文档极友好import { debounce, tryit } from 'radashi'const [err, data] = await tryit(fetch)('/api/user')注意:函数名、参数与 lodash 不同,需要一次“重写式”迁移,适合新服务或重构窗口期。
定位:保留 lodash 函数名,内部用原生 API 重写,删掉历史包袱。
优势:
体积 −70%,性能 ×2-4,浏览器下限仍是 ES2020。函数签名 95% 一致,官方 codemod 自动跑单测,适合“想升级又怕改爆”的团队。只留高频 70+ 函数,冷门能力(如 _.iteratee)直接下线,减少“学不动”焦虑。怎么用:
npm i moderndashnpx @moderndash/codemod src/从 jQuery 到 lodash,从 lodash 到“后 lodash 四小龙”,再到各种框架、编译器、运行时——前端生态圈永远热气腾腾。
工具库没有“原罪”,只有“适不适合当前的基础设施”。
lodash 完成了它的历史使命,把 ES5 时代的坑填平;现在轮到新工具站在 ES2020+、Tree-Shaking、TypeScript 的肩膀上,把开发体验再往前推一格。
所以,如果你正准备 npm i lodash,不妨先停 3 秒,试试上面任意一位接班人——
同样顺手,却更轻、更快、更对现代胃口。
来源:不秃头程序员