写点什么

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

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

关注

评论

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

企业的“数字安全基建”——等保测评,为未来“扫雷”

等保测评

网络安全 信息安全 数据安全 黑龙江等保测评 哈尔滨等保测评

五款远程控制软件盘点排名:我们应该选择哪一款?

科技经济

开源能源管理系统的标杆之作——深度解析MyEMS的技术优势与应用价值

开源能源管理系统

开源 能源管理系统

Web3 软件的开发框架

北京木奇移动技术有限公司

区块链开发 软件外包公司 web3开发

人工智能AI在行业的应用和技术方案

金陵老街

人工智能 AI 大模型

BeeWorks企业即时通讯软件怎么样?

BeeWorks

即时通讯 IM 私有化部署

MyEMS:智能化能源管理的创新实践者

开源能源管理系统

开源 能源管理系统

亿级O2O(智能设备)系统架构笔记【原创】

车江毅

架构规划 技术战略规划 百万设备在线 亿级订单 o2o

破壁OLTP与OLAP:TiDB如何用“双引擎”与“异步魔法”重塑数据库架构!

TiDB 社区干货传送门

OLAP 金融 OLTP HTAP 国产化替代

区块链Web3 系统的开发技术

北京木奇移动技术有限公司

区块链技术 软件外包公司 web3开发

让 ETL 更懂语义:DataWorks 支持数据集成 AI 辅助处理能力

阿里云大数据AI技术

人工智能 阿里云 AI辅助 Dataworks

LED屏幕样品可提供吗?

Dylan

产品 LED LED display LED显示屏 LED屏幕

第四期共读《斯坦福大学人生设计课》

ShineScrum

读书感悟 读书方式 #读书

基于 Code 开源版二次开发流程:DDD 架构落地用户模型管理全流程

王中阳Go

DDD

智源具身框架Thor开源:迈向类人级全身控制,让机器人在强对抗中“站稳脚跟”

智源研究院

PCTA认证-101课程学习笔记

TiDB 社区干货传送门

学习&认证&课程

TiDB 企业版敏捷模式试用:政企实战场景体验

TiDB 社区干货传送门

社区活动 TEM 试用 平凯数据库敏捷模式

TiDB v7.1.8 多语法兼容MySQL 多场景验证

TiDB 社区干货传送门

测试 数据库迁移 国产化替代 7.x 实践 平凯数据库敏捷模式

达能×火山引擎:用AI升级消费者洞察

字节跳动数据平台

面试官狂问的 27 个 RAG 问题全解析:从基础到架构优化,一次讲透!

测试人

软件测试

数字孪生项目开发框架与特点

北京木奇移动技术有限公司

数字孪生 软件外包公司 webgl开发

ClkLog埋点分析系统:快速实现用户行为数据采集与分析

ClkLog

开源 数据分析 埋点 sdk 画像

数字孪生项目的开发

北京木奇移动技术有限公司

数字孪生 软件外包公司 webgl开发

I2:产品运营大树

执于业务

数字孪生项目开发技术栈

北京木奇移动技术有限公司

数字孪生 软件外包公司 webgl开发

1688图片搜索API秘籍!轻松获取相似商品数据

Datafox(数据狐)

1688图片搜索接口 1688图片识别接口 1688图搜API 1688拍立淘api 1688按图搜索接口

算电协同,商汤大装置为AI基础设施“降碳提智”提供新范式

Lily

1688商品评论API:轻松挑选优质商品的利器

Datafox(数据狐)

1688商品评论API 1688评论API 1688评论数据 1688评论采集

如何利用境外舆情网站分析与应对公关事件

沃观Wovision

舆情监测 舆情监测系统 海外舆情监测 舆情监测网站

2025新规:歇业、整改、罚款!——只因忽略一件事

等保测评

网络安全 信息安全 数据安全 黑龙江等保测评 哈尔滨等保测评

企业必读:等保测评的几个误区——你的信息真的安全吗?

等保测评

网络安全 信息安全 数据安全 黑龙江等保测评 哈尔滨等保测评

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