写点什么

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

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

关注

评论

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

表格检测识别技术面临的挑战和发展趋势

合合技术团队

人工智能 表格识别 表格检测

程序员搞开发的时候,心态真的不稳

伤感汤姆布利柏

WEB系统安全之开源软件风险使用评估

天翼云开发者社区

开源 Web

TIDB v7.1 reource control资源管控特性体验贴

TiDB 社区干货传送门

版本测评 7.x 实践

带你了解爆火的AI框架-LangChain

派大星

关于 3.0 和 2.0 的数据文件差异以及性能优化思路

爱倒腾的程序员

微服务之道:8个原则,打造高效的微服务体系

不在线第一只蜗牛

微服务 微服务架构

发送Tidb告警信息到企业微信群实践

TiDB 社区干货传送门

监控

微服务架构的重要性:现代应用开发的关键趋势

2756

微服务架构 微服务、

如何用极狐GitLab 为 iOS App 创建自动化CI/CD?详细教程来了

极狐GitLab

ios DevOps gitlab 自动化 CI/CD

实现淘宝母婴订单实时查询和可视化|Flink-Learning实战营

Apache Flink

大数据 flink

linux自动化运维工具用哪款好?理由是什么?

行云管家

Linux IT运维 自动化运维

边缘云特点、应用实践和发展趋势浅析

天翼云开发者社区

边缘云

资源池化:多租户与数据库整合解决方案

TiDB 社区干货传送门

新版本/特性解读 数据库架构设计

TiDB 多租户方案和原理

TiDB 社区干货传送门

TiDB 底层架构 新版本/特性解读 7.x 实践

OpenResty 安装

流火

基于驱动因素的全面预算管理方式

智达方通

智达方通 全面预算管理 业财驱动 驱动因素

证书管理:从手工到平台化

vivo互联网技术

运维自动化 运维开发 证书管理

零样本视频生成无压力,基于飞桨框架实现Text2Video-Zero核心代码及依赖库

飞桨PaddlePaddle

人工智能 百度 paddle 飞桨 百度飞桨

数字先锋|云上医院长什么样?宁夏固原中医医院带你一探究竟!

天翼云开发者社区

云计算

从零开始初识机器学习 | 京东云技术团队

京东科技开发者

人工智能 机器学习 企业号 6 月 PK 榜

记一次Native memory leak排查过程 | 京东云技术团队

京东科技开发者

native 企业号 6 月 PK 榜 memory leak

TiDB 升级利器(参数对比)——TiDBA

TiDB 社区干货传送门

7.x 实践

来了,kubesphere轻松搭建redis

夜栩

后端 docker image KubeSphere

MySQL中字符串查询效率大比拼

不在线第一只蜗牛

数据库 sql

南通市属于几线城市?本地有正规等保测评机构吗?

行云管家

等级保护 等保测评 南通

高考成绩都出来了,你的秒杀系统如何了?

冰河

并发编程 多线程 高并发 协程 秒杀系统

TICDC 数据同步至 MySQL初体验

TiDB 社区干货传送门

迁移

【TiDB v7.1.0】资源管控调研及评测

TiDB 社区干货传送门

7.x 实践

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