6K star!平替Lodash,体积缩小97%,轻巧的JS实用库

文摘   科技   2024-08-26 12:44   北京  

点击上方蓝字关注我们

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

 

es-toolkit 支持 Node.js 18及更高版本。使用以下命令安装 es-toolkit:

#npmnpm install es-toolkit#PNPMpnpm install es-toolkit#YARNyarn 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

 

浏览器

 

你可以在诸如jsdelivrunpkg等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



往期推荐

56K star!Nginx的轻量替代者,自动HTTPS的web服务器

GraphRAG门槛高,试试更小、更快、更干净的 GraphRAG

「Github一周热点37期」开源身份认证、代理客户端 、Transformer可视化等5个项目


  




识别二维码关注我们
微信号- it-coffee
B站 - IT-咖啡馆
头条号- IT咖啡馆

IT咖啡馆
开源项目、IT技能和有趣的事情
 最新文章