2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

Lodash,你正在使用的 JavaScript 库

  • 2015-03-31
  • 本文字数:1189 字

    阅读完需:约 4 分钟

JavaScript 工具库 lodash 发布了 3.5 版,成为了 npm 包仓库中依赖最多的库。它正在摆脱屌丝身份,成为开发者的不二之选。

lodash 一开始是 Underscore.js 库的一个 fork,因为和其他 (Underscore.js 的) 贡献者意见相左。 John-David Dalton 的最初目标,是提供更多“一致的跨浏览器行为……,并改善性能”。之后,该项目在现有成功的基础之上取得了更大的成果,并于一月份发布了 3.0 版本。

与其前任 Underscore 一样,lodash 的名字也是源于所有函数前面的那个字符。就像 jQuery 在全部函数前加全局的 $ 一样,lodash 使用全局的 _ 来提供对工具的快速访问。例如,要对数组的所有元素执行某个行为,我们可以:

_.each([1, 2], function(n) { console.log(n); });3.0 版包含了新增的 47 个新方法(如_.camelCase_.flattenDeep)在内的许多更改。更重要的是对链式方法进行延迟计算:

复制代码
var users = [
{ 'user': 'barney', 'age': 36 },
{ 'user': 'fred', 'age': 40 },
{ 'user': 'pebbles', 'age': 1 }
];
var youngest = _.chain(users)
.sortBy('age')
.map(function(chr) {
return chr.user + ' is ' + chr.age;
})
.first()
.value();
// → 'pebbles is 1'

在 InfoQ 的一次采访中,Dalton 表示在这些方法中使用延迟计算改进了 lodash 的性能:

延迟计算意味着在显示或隐式的 value() 调用之前不会执行链式方法。由于执行被延后了,因此 lodash 可以进行 shortcut fusion 这样的优化,通过合并链式 iteratee 大大降低迭代的次数。

Filip Zawada描述了这一改变对于性能的提升。

最初,lodash 只是 Underscore 的一个复制品,但 3.0 之后,不会再有针对于 Underscore 的构建。“尽管我们仍然会运行 Underscore/Backbone 的单元测试,但 lodash 3.0 将不再支持单独的 Underscore/Backbone 构建”,Dalton 说。

在过去的一年中,我们看到 Underscore 根据 lodash 的 API 进行了很多调整,因此为 Underscore 进行单独构建的需求减少了。如果开发者仍然需要兼容某些边缘情况,建议在使用 Underscore 的同时,用 lodash 3.0 版中的模块进行补充。

一些主要的 npm 包都依赖于 lodash,如 JavaScript 转译器 Babel 、博客平台 Ghost ,和项目脚手架工具 Yeoman 。其中 Ghost 是从 Underscore 迁移到了 lodash。在被 InfoQ 问及在 Ghost 中引入 lodash 时,Ghost 的创始人 John O’Nolan 说到,“这是一个非常明智的选择,它几乎完全是由我们开源开发社区推动的。

我们发现 lodash 包含更多的功能,更好的性能、恰到好处地使用了 semver,并且在 Node.js 社区(以及其他依赖)中越来越抢眼。

lodash 不但深受 node.js 开发者欢迎,还广泛应用于基于浏览器的项目中。Web 开发者可以使用实验构建工具来挑选项目中需要的方法,而不必下载整个库。对于 node.js 项目,在不需要整个包的时候,可以只 include 单个方法。

查看英文原文 Lodash, the JavaScript Library You’re Already Using

2015-03-31 07:1010562
用户头像

发布了 59 篇内容, 共 26.3 次阅读, 收获喜欢 3 次。

关注

评论

发布
暂无评论
发现更多内容

一杯咖啡的艺术 | 如何利用数字孪生技术做出更美味的意式浓缩咖啡?

Altair RapidMiner

人工智能 数据分析 数字孪生 altair

英特尔发布AI创作应用AI Playground,将于今夏正式上线!

E科讯

ICE.AI市场需求与愿景

科技汇

【IoTDB 线上小课 04】时序数据库怎么选?揭秘性能核心指标!

Apache IoTDB

【中英互译】可以为你出谋划策的AI翻译

AppBuilder

活动回顾丨飞天技术沙龙 Serverless + AI 专场(上海站)回顾 & PPT 下载

阿里巴巴云原生

阿里云 Serverless 云原生

英特尔旗下子公司发布OLEA U310 SoC

E科讯

TXT文本一键转思维导图!这3款AI软件不容错过

彭宏豪95

人工智能 思维导图 在线白板 办公软件 AIGC

AI “黏土画风”轻松拿捏,手把手带你云端部署 ComfyUI

阿里巴巴云原生

阿里云 云原生

吞吐量10倍提升!分布式文件系统性能优化创新方案

焱融科技

焱融科技参编国内首个高性能计算存储标准

焱融科技

Taiko钱包推荐,体验用bitget钱包做Taiko主网任务

股市老人

pytest 参数化测试用例

测吧(北京)科技有限公司

测试

企业上云的优点、难点及SD-WAN解决方案的探讨

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SDWAN

一文读懂bitgert(brise),以及bitget钱包使用体验

股市老人

SD-WAN企业组网六大优点

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SDWAN

掌握JMeter:深入解析如何提取和利用JSON数据

霍格沃兹测试开发学社

视频生成模型 Dream Machine 开放试用;微软将停止 Copilot GPTs丨 RTE 开发者日报 Vol.224

声网

音频剪裁大师:使用 Python 和 ffmpeg 分割音频的完整指南

霍格沃兹测试开发学社

使用Postman发送POST请求的指南

霍格沃兹测试开发学社

Postman变量使用指南

霍格沃兹测试开发学社

干货下载 |《数据治理:数据中台建设与能力提升策略》

博睿数据

Windows电脑安装Apache JMeter的详细教程

霍格沃兹测试开发学社

Word文档中如何做思维导图?2个实用技巧推荐,办公必备!

彭宏豪95

效率工具 思维导图 word 在线白板 办公软件

inBuilder 低代码平台新特性推荐 - 第二十一期

inBuilder低代码平台

开源 低代码

VSCode安装使用教程,保姆级!

霍格沃兹测试开发学社

深入探索Chrome开发者工具:开发者的利器

霍格沃兹测试开发学社

天谋科技与慢牛科技完成兼容性互认证

Apache IoTDB

预告|博睿数据将受邀出席GOPS全球运维大会北京站!

博睿数据

618大促背后的智能力量:天润融通如何用AI大模型提升客户服务?

天润融通

人工智能 天润融通

Lodash,你正在使用的JavaScript库_JavaScript_David Iffland_InfoQ精选文章