【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

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

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

关注

评论

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

什么是制造业数字化转型?制造业数字化转型的核心与意义

优秀

数字化转型 制造业

自研分布式高性能RPC框架及服务注册中心ApiRegistry

车江毅

Java Eureka 注册中心 服务治理 服务中心

FinClip 手把手教学:如何将小程序游戏引入自有APP?(Android篇)

FinClip

如何制作一个实时在线显示评论?

Towify

微信小程序 无代码

马斯克都不懂的 GraphQL,API 网关又能对其如何理解?

API7.ai 技术团队

api 网关 graphql APISIX

聚焦技术,锐意创新,GaussDB给世界一个更优选择

华为云开发者联盟

数据库 后端 华为云 12 月 PK 榜

AngularJS进阶(三十九)基于项目实战解析ng启动加载过程

No Silver Bullet

项目实战 AngularJS 12月月更 启动加载

spring高级源码笔记:深入理解阿里spring源码核心思想及框架应用

钟奕礼

Java 程序员 java面试 java编程

手把手系列:如何将小程序游戏引入自有APP?(iOS篇)

FinClip

银斯微与大敦科技签署MOU,推动UI开发工具在中国的落地应用

科技热闻

cdr2023断网离线激活下载教程

茶色酒

cdr2023

骨灰级精品,京东百万架构师亲码的MySQL内部笔记太硬核了

小小怪下士

Java MySQL 程序员

系统的混乱并非业务本身之复杂,我们并不擅长处理『简单』

阿里技术

软件工程 复杂度

如何合并Excel文档

Geek_249eec

C# Excel VB.NET

震惊,WSL2居然可以挂载USB

DisonTangor

WSL2 usb

数据库原理及MySQL应用 | 多表查询

TiAmo

MySQL 数据库 12月月更

版本更新 | Towify V1.23.1 有哪些实用新功能?汇总来了!

Towify

微信小程序 无代码平台

guitar pro2023下载官方版app

茶色酒

Guitar Pro guitar pro2023

直播 | 数据智能大咖在线研讨,带你找到适合自己的企业级方法论!

StarRocks

数据库 物流

Kerberos 身份验证在 ChunJun 中的落地实践

袋鼠云数栈

数据集成 kerberos 大数据 开源

AngularJS进阶(四十)创建模块、服务

No Silver Bullet

服务 模块 AngularJS 12月月更

Sovit3D引擎快速构建智慧变电站三维可视化系统

2D3D前端可视化开发

物联网 智慧变电站 智能变电站 数字孪生变电站 变电站可视化

AlibabaP8,耗时182天肝出来1015页分布式全栈手册

程序知音

Java 分布式 后端 java架构

PreSTU:一个专门为场景文本理解而设计的简单预训练模型

华为云开发者联盟

人工智能 华为云 OCR 12 月 PK 榜

面了40+岁的大叔,没有录用,并不是因为年龄

产品运营心经

工作经历 面试‘ 职场发展 大龄求职

公司刚来的京东架构师:看完我写的spring笔记,甩给了我一份文档

钟奕礼

Java 程序员 Java 面试 java编程

如何删除数据并刷新列表

Towify

微信小程序 无代码 触发器

介绍四大并发集合类并结合单例模式下的队列来说明线程安全和非安全的场景及补充性能调优问题。

C++后台开发

多线程 并发 后端开发 异步 linux开发

openGemini v0.2.0版本正式发布:5大特性全面增强

华为云开发者联盟

数据库 后端 华为云 12 月 PK 榜

哪篇论文宣布了 HTAP 数据库的诞生?解读《A Common Database Approach for OLTP and OLAP Using an In-Memory Column DataBase》

StoneDB

MySQL HTAP 数据库· StoneDB 12 月 PK 榜

AngularJS进阶(四十一)AngularJS中使用Chart.js制折线图与饼图实例

No Silver Bullet

AngularJS 12月月更 Chart.js 折线图与饼图

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