点击上方蓝字关注我们
IT 咖啡馆,探索无限可能!
恭喜你发现了这个宝藏,这里你会发现优质的开源项目、IT知识和有趣的内容。
如果你是一个前端开发者,那你应该知道lodash,它提供了常用的JS函数,方便了开发。
今天我们分享的开源项目,它可以作为lodash的平替的JS实用库,并且它比lodash更小、更快,它就是:es-toolkit
es-toolkit 是什么
es-toolkit 是一个先进的、高性能的 JavaScript 实用工具库,具有小的捆绑包大小和强大的类型注解。
作为Lodash的平行替换,最值得关注的就是es-toolkit 提供了明显更小的包体积,它的体积最多可以减少97%。在优化的体积的同时,es-toolkit还提供了更加优秀的运行时性能,可以提升2-3倍的运行时性能。这是通过利用最新的 JavaScript 特性实现的。
es-toolkit 内置 TypeScript 类型,并经过严格测试,确保了100%的测试覆盖率,以保证最大的可靠性。
es-toolkit功能
es-toolkit 当前拥有功能是根据JavaScript常用数据操作来分类的,例如:数组工具、函数工具、数学工具、对象工具、谓词、promise工具和字符串工具等等。以下是 es-toolkit 提供的一些功能特点:
Array: 数组操作工具,如 uniq 和 difference。
Function: 控制函数执行的工具,包括 debounce 和 throttle。
Math: 数值操作工具,如 sum 和 round。
Object: 操作 JavaScript 对象的工具,如 pick 和 omit。
Predicate: 类型保护函数,如 isNotNil。
Promise: 异步操作工具,如 delay。
String: 字符串操作工具,如 snakeCase。
其中以difference为例,使用方式如下:
import { difference } from 'es-toolkit/array';
const array1 = [1, 2, 3, 4, 5];
const array2 = [2, 4];
const result = difference(array1, array2);
// 结果将是 [1, 3, 5],因为 2 和 4 都在两个数组中,所以它们被排除在结果之外。
对比es-toolkit和lodash的性能
安装 es-toolkit
es-toolkit 可通过 npm 安装,适用于 Node.js 和 Bun,也可以通过 JSR 安装到 Deno。或者直接在HTML中通过CDN来载入。
Node.js
Node.js
es-toolkit 支持 Node.js 18及更高版本。使用以下命令安装 es-toolkit:
#npm
npm install es-toolkit
#PNPM
pnpm install es-toolkit
#YARN
yarn add es-toolkit
Deno
es-toolkit 也可以通过 JSR 安装到 Deno。使用以下命令安装 es-toolkit:
deno add @es-toolkit/es-toolkit
请注意,根据 JSR 的限制,包名包含额外的作用域,与 npm 不同。
import { sum } from '@es-toolkit/es-toolkit';
sum([1, 2, 3]);
Bun
es-toolkit 也支持 Bun。您可以使用以下命令安装它:
bun add es-toolkit
浏览器
你可以在诸如jsdelivr或unpkg等CDN上找到es-toolkit。我们将 _
定义为包含所有函数,类似于 Lodash。
<script src="<https://cdn.jsdelivr.net/npm/es-toolkit>"></script>
<script>
var arr = _.chunk([1, 2, 3, 4, 5, 6], 3);
</script>
性能对比
es-toolkit 设计时考虑了性能,与类似 lodash 的替代库相比,平均性能提升了2倍。通过充分利用现代 JavaScript API,部分函数甚至可以获得高达11倍的性能提升。
对比es-toolkit和lodash的性能可以参考下面的表格数据。测试在 MacBook Pro 14-inch (M1 Max, 2021) 上进行。
与Lodash兼容
为了最大限度地兼容 lodash
,请使用 es-toolkit/compat
,这是一个弥合这两个库之间差距的兼容性层。
// es-toolkit/compat 的目标是提供与 lodash 百分之百的功能兼容性
import { chunk } from 'es-toolkit/compat';
chunk([1, 2, 3, 4], 0);
// 返回 [], 与 lodash 完全相同
该模块旨在提供与 lodash
相同的 API,使得在这两个库之间进行切换更加容易。
es-toolkit/compat
已经过 lodash
的实际测试用例进行了全面测试。
需要注意的是,与原始 es-toolkit
相比,es-toolkit/compat
可能会对性能产生轻微影响,并且包大小可能会更大。该模块旨在促进平滑过渡,一旦迁移完成,应替换回原始的 es-toolkit
以获得最佳性能。
目前兼容性支持的功能还没有完全覆盖,可以参考文档来确定你需要的方法是否已经支持兼容性层。
总结
在前端JS库方面,总是有很多人在不断的创新和优化,也有人不断的向lodash发起挑战,但是lodash依然可以广受欢迎也看出它的积累之深厚,如果说想要es-toolkit一下就超越lodash我觉得也不现实,但是如果它在保持性能的同时,持续优化可用性,那也会成为一个非常不错的选择。
项目信息
项目名称:caddy
GitHub 链接:https://github.com/caddyserver/caddy
Star 数:56K