GitHub 链接:https://github.com/caddyserver/caddy

https://cdn.jsdelivr.net/npm/es-toolkit

作为Lodash的平行替换,最值得关注的就是es-toolkit 提供了明显更小的包体积,它的体积最多可以减少97%。在优化的体积的同时,es-toolkit还提供了更加优秀的运行时性能,可以提升2-3倍的运行时性能。这是通过利用最新的 JavaScript 特性实现的。

es-toolkit 内置 TypeScript 类型,并经过严格测试,确保了100%的测试覆盖率,以保证最大的可靠性。

工具地址:https://es-toolkit.slash.page/
仓库地址:https://github.com/toss/es-toolkit

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



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。
https://cdn.jsdelivr.net/npm/es-toolkit

<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我觉得也不现实,但是如果它在保持性能的同时,持续优化可用性,那也会成为一个非常不错的选择。

文档更新时间: 2024-09-05 22:23   作者:admin