报名参加CloudWeGo黑客松,奖金直推双丰收! 了解详情
写点什么

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

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

关注

评论

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

Flutter OHOS flutter_dart_native

flfljh

Topaz Video AI for Mac 强大的视频增强与修复工具

小玖_苹果Mac软件

2024年用户喜爱的Top5云电脑排名!没想到黑马是这家

三掌柜

测评对比

harmony_flutter_FlutterEngineGroup

flfljh

OmniPlan Pro 4 for Mac:强大的项目管理工具

小玖_苹果Mac软件

鸿蒙Flutter怎样调试dart代码

flfljh

非凸科技荣获2024“创·在上海”国际创新创业大赛优胜企业奖

非凸科技

如何理解符号引用和直接引用?

王磊

Flutter OHOS harmony_fluwx 集成微信服务(二)

flfljh

Walgreens商品详情API接口的开发应用与收益

科普小能手

数据分析 爬虫 跨境电商 API 接口 API 测试

鸿蒙+next+封装轻量级缓存工具PreferencesUtil

flfljh

快速记笔记软件SideNotes for mac 1.4.15激活版

小玖_苹果Mac软件

如何成功养成一个TikTok账号?

Ogcloud

TikTok tiktok运营 TikTok养号 tiktok起号

CosyVoice 2.0 支持双向流式语音合成;无问芯穹开源全模态理解端侧模型丨RTE 开发者日报

声网

Flutter OHOS flutter appscheme插件

flfljh

Capture One Studio for Mac中文直装 专业RAW照片处理软件

小玖_苹果Mac软件

harmony_flutter_udid

flfljh

Capture One 23 Pro for Mac专业RAW照片处理利器

小玖_苹果Mac软件

江苏省推出人工智能通识课,和鲸Heywhale重磅上线课程+平台+资源一体化解决方案

ModelWhale

Python 人工智能 大数据 AI

Bartender 5 for Mac智能管理菜单栏的神器

小玖_苹果Mac软件

优化永不止步:TinyVue v3.20.0 正式发布,更美观的官网UI,更友好的文档搜索,更强大的主题配置能力~

OpenTiny社区

组件库 OpenTiny 前端开源

从单一领域到系统级仿真与优化:Altair在消费电子产品设计中的应用

Altair RapidMiner

制造 仿真 altair Hypermesh jabra

关键帧动画

flfljh

出海电商的关键:原生IP的重要性解析

Ogcloud

海外原生IP 海外IP 海外直播IP 原生IP 海外IP代理

鸿蒙Flutter环境相关问题解决方法

flfljh

鸿蒙Flutter性能调优之性能分析定界

flfljh

HarmonyOS NEXT基础入门

flfljh

Ableton Live 11 Suite for Mac 强大的音乐创作与表演工具

小玖_苹果Mac软件

观测云亮相 Doris Summit,展示流式聚合创新技术

观测云

数据库性能优化

Aseprite for Mac 专业的像素艺术与动画制作工具

小玖_苹果Mac软件

鸿蒙基础入门01

flfljh

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