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:1010579
用户头像

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

关注

评论

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

深度剖析React懒加载原理

xiaofeng

前端 React

索信达宣布接入百度文心一言能力 加速推进AI在金融场景落地应用

索信达控股

面向复杂业务场景下的低代码平台组件设计与实践分享

百度开发者中心

低代码平台 amis

企业IM即时通讯软件:就选安全稳定、自主可控的WorkPlus

BeeWorks

OpenCloudOS 如何利用 nettrace 进行网络故障诊断

OpenCloudOS

Linux

得物供应链复杂业务实时数仓建设之路

得物技术

数据库 大数据 技术架构

软件测试/测试开发 | 想测试入门就必须要懂的软件开发流程

测试人

软件测试 自动化测试 测试发开

美团前端二面常考react面试题及答案

xiaofeng

前端 React

京东物流实时风控实践

Apache Flink

大数据 flink 实时计算

党政军IM私有化搭建,WorkPlus构建军工行业即时通讯安全底座

BeeWorks

vue实战-完全掌握Vue自定义指令

yyds2026

Vue 前端

从0到1,亿级消息推送的稳定性保障 | 得物技术

得物技术

稳定性 消息推送

信息安全“狂飙”不止,WorkPlus为政企数字化保驾护航

BeeWorks

更专业的出海服务商,融云荣膺 GTC2022 鲸鸣奖「优秀出海服务商」

融云 RongCloud

出海

即刻下载|连锁零售数字化转型难?领先企业实践助你打开新思路

Kyligence

大数据分析 指标中台

Zabbix 官方推荐的标签使用准则

北海

运维 zabbix 标签 IT运维 tag

vue实战-深入响应式数据原理

yyds2026

Vue 前端

你有“ChatGPT综合征”吗:想搞钱,或是失业焦虑?

引迈信息

人工智能 AI ChatGPT

自建MQTT迁移IoT物联网平台实战——实践类

阿里云AIoT

监控 物联网 消息中间件 数据格式 网络性能优化

百度百舸 · AI 异构计算平台,加速自动驾驶模型迭代

百度开发者中心

人工智能 自动驾驶 计算 AIIaaS

美团前端经典vue面试题总结

yyds2026

Vue 前端

前端监控稳定性数据分析实践 | 得物技术

得物技术

前端 前端监控 客服业务

致远互联2022年度净利9946.37万,研发投入增加;从人出发,人即流程、人即绩效

B Impact

物联网平台企业版:设备接入实例节点开发实战——实践类

阿里云AIoT

监控 前端开发 物联网 数据处理 网络性能优化

前端一面react面试题指南

xiaofeng

前端 React

深度探讨react-hooks实现原理

xiaofeng

前端 React

设备端资源包文件(人脸库,音频库,图片资源等)更新方案——实践类

阿里云AIoT

阿里云 物联网 IoT 对象存储

2023前端vue面试题(边面边更)

yyds2026

Vue 前端

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