AICon 深圳站聚焦 Agent 技术、应用与生态,大咖分享实战干货 了解详情
写点什么

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

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

关注

评论

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

技术分享 | 如何基于阿里云AIACC加速Stable-Diffusion AI绘画

阿里云弹性计算

云计算 AIGC AIACC AI大语言模型 大语言模型

国内数据库第一梯队!柏睿数据RapidsDB通过“可信数据库”评测

新消费日报

污点分析是什么神奇的代码检查技术?

云计算 华为云 华为开发者大会2023 代码检查

大型企业全面预算管理该何去何从?

用友BIP

全面预算

企业为什么需要软件的应用框架?

力软低代码开发平台

探寻日本区块链游戏的未来潜力

Footprint Analytics

区块链游戏 NFT 链游

BI商业智能工具给企业带来的变化,以瓴羊QuickBI为例

巷子

华为云书库《Spring Boot2系列实战教程》电子书下载

编程 软件开发 计算机 华为云 华为开发者大会

一文详解:企业大数据分析工具有哪些?

夜雨微澜

用友iuap:社会级数智化底座,助力企业实现国产替代

用友BIP

国产替代

全面数字化业务时代亟需升级企业数智底座

用友BIP

数智底座

KaiwuDB 获 2023 可信数据库发展大会“双料”荣誉

KaiwuDB

KaiwuDB 2023可信数据库发展大会

瞬间抠图!揭秘 ZEGO 绿幕抠图算法背后的技术

ZEGO即构

人工智能 图像处理 AI抠图 绿幕 主体分割

influxdb 中得 fields 与 tag 区别总结

互联网工科生

Influxdb

pprof 数据组装(一)

jupiter

pprof ebpf parca

日本 NFT 项目概览与特点总结

Footprint Analytics

区块链游戏 NFT

喜报 | 极限科技 Easysearch 获得由信通院颁布的首批可信搜索型数据库产品证书

极限实验室

大数据 搜索引擎 数据库· 极限科技 2023可信数据库发展大会

软件测试/测试开发丨Pytest配置文件pytest.ini

测试人

Python 程序员 软件测试 测试开发 pytest

开源项目推荐 【SkyEyeSystem】

程序员阿杜

Java 爬虫 springboot

工业软件芯片国产化:数智化自主可控的重要保障

用友BIP

国产替代

供应链管理系统有哪些模块?

优秀

供应链管理 scm

6月《中国数据库行业分析报告》已发布,首发空间、搜索引擎数据库【全球产业图谱】

墨天轮

数据库 国产数据库 空间数据库 搜索引擎数据库

生成式 AI 对未来的展望| 社区征文

查拉图斯特拉说

AI ChatGPT MidJourney 文生图 年中技术盘点

SpringBoot 3.0来了,你准备好了吗? | 社区征文

bug菌

后端 年中技术盘点

如何理解低代码平台的定制化服务?

互联网工科生

低代码 软件定制

日本加密货币市场报告: 行业趋势和未来前景研究

Footprint Analytics

加密货币 区块链游戏 NFT Web3 游戏

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