写点什么

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

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

关注

评论

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

希望计算机专业同学都知道这些宝藏博主

程序员大彬

自学编程 计算机 计算机专业

PyTorch 深度学习实战 | 基于YOLO V3的安全帽佩戴检测

TiAmo

数据采集 PyTorch

强大的ai技术图像编辑器:Luminar Neo 激活版

真大的脸盆

图像编辑 编辑图像 图像处理工具

DUIN开源的镜像更新通知工具

mengzyou

container DevOps image

树状数组模板与练习

timerring

算法

能快速构建和定制网络拓扑图的WPF开源项目-NodeNetwork

沙漠尽头的狼

开源WPF项目 网络拓扑图

测试人社区软件测试技术沙龙,基于代码链路分析的白盒精准测试方案

测试人

软件测试 自动化测试 精准测试 测试开发

霸榜牛客!阿里P8大牛整理的Java面试核心知识点竟如此霸道

Java你猿哥

Java 面试 ssm 面经 java核心知识

关于如何提升研发效能的一些思考

阿呆

AlertDialog(对话框)详解

芯动大师

android AlertDialog 对话框

python中进程、线程、协程的实践

阿呆

Java泛型介绍

TaurusCode

Java泛型

「百幄」系列 | 在线会议套件,让政企协作更安全高效

融云 RongCloud

通信 办公 政企 数智化转型 在线会议

SpringBoot 集成 Druid 数据源

Java你猿哥

Java Spring Boot 后端 ssm Druid

腾讯架构师手撸这份标星过万的"计算机网络协议笔记"全网爆火

Java你猿哥

架构 网络安全 ssm 架构师 分布式架构

简单的文件同步工具:SyncTime激活版

真大的脸盆

Mac Mac 软件 同步文件工具 同步工具

如何把握未来技术的演进方向

Ethan

欢迎来到 Python 入门级教程!

阿呆

Python

站在工作的角度体验一下文心一言

IT蜗壳-Tango

IT蜗壳 ChatGPT 文心一言 文心一言测试

TGO笔记-AIGC分享之投资视角(61/100)

hackstoic

AI ChatGPT 创业投资

3D视觉特效剪辑合成: Flame 2023 激活版

真大的脸盆

Mac Mac 软件 视频特效合成 视频特效工具

《C++编程规范-101条规则 准则与最佳实践》读书笔记

老王同学

c++ 读书笔记

凭借这份阿里2023版Java架构师面试指南,我一周时间斩获了5个Offer!

Java永远的神

程序员 程序人生 后端 架构师 java面试

SpringBoot启动之准备系统环境environmentPrepared

石臻臻的杂货铺

spring springboot

域名备案不备案的区别是什么?

源字节1号

运维 软件开发 前端开发 后端开发 小程序开发

CPU基础知识详解

timerring

cpu

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