写点什么

Underscore 和 Lodash 商讨合并事宜

  • 2015-06-19
  • 本文字数:1371 字

    阅读完需:约 4 分钟

Underscore 和 Lodash 是两个较为流行的 JavaScript 库,二者长久以来一直处于竞争关系,目前他们正在商讨合并事宜。二者合并将会是开发者的一大福利,但在目前看来,二者皆有极强的个性,最终可能难以统一意见。

上周,Underscore 的创造者 Jeremy Ashkenas 在一条 Github issue 中向 Lodash 的创造者 John-David Dalton 表明合并两个库的意愿。社区认为这是一个极为疯狂的想法,双方的支持者都坚持认为己方应主导合并后的代码。

对于一些人来说,lodash 是唯一选择,他们认为 underscore 更像是一款在相对宽松的环境中使用的玩具, Nijiko Yonskai 说道:“为什么不只抨击 underscore 呢?Lodash 显然更为成熟,并引导着二者的发展方向”,他继续说道:

合并这两个项目没有意义,除非在合并时抛弃 underscore,只使用 lodash 的代码。二者皆为不同目的而生,Lodash 更全面,更可靠并且维护得更好。

lodash 的一大亮点在于其模块化:开发者可以按需加载,而非引用整个库。每一个模块都暴露在 npm 中,所以开发者可以独立地引用它们:

复制代码
npm install lodash.map
var map = require('lodash.map');

每个项目都从不同的角度描述文档。Underscore 用一种侃侃而谈的语调,lodash 则保持更加正式的风格。举个例子,二者的文档中这样描述 each 函数:

Underscore

遍历 list 中的所有元素,按顺序用遍历输出每个元素。如果传递了 context 参数,则把 iteratee 绑定到 context 对象上。每次调用迭代器都会传递三个参数:(element, index, list)。如果 list 是个 JavaScript 对象,迭代器的参数是 (value, key, list))。返回 list 以方便链式调用。

Lodash

遍历 collection 中的所有元素并为每个元素调用迭代器,迭代器绑定到 thisArg 并且传递三个参数进行调用:(value,index 或 key,collection)。如果显式返回 false 则迭代器函数提前退出迭代。

在 InfoQ 的采访中,Dalton 说他愿意接触 Ashkenas 是因为他们对于 JavaScript 库有相同的愿景:

我们有相同的目标,大部分(60% 左右)的 API 相同,并且拥有许多重合的贡献者,二者合并有利于减少重复工作,可以简化选型复杂度并更好地支持开发者们。

但是如何整合尚不明确,Ashkenas 在 Github 上一个 Underscore 贡献者的独立讨论中说:

没有必要强行合并二者并发布一个不靠谱的东西,这会增加短期内的复杂度。我认为设想一个大家一致认同的“Underscore 2.0”并努力实现这一目标相对更有价值。

当被问及合并事宜时, Babel 的贡献者 James Kyle 认为,现状不会改变。“所有的一切会一如既往地发展着,Lodash 会缓慢更新,但是一定会彻底替代 Underscore”。他信心十足,然而:

现今的 JavaScript 社区里有太多的重复性工作,主要的原因是人们不能在意见产生分歧时达成合理的一致意见。Lodash 可以通过少许改变轻松地匹配 Underscore,但如果 Underscore 不在某些问题上让步,我个人认为他们最终没有合并的希望。

Underscore.js Lodash 是最常用的 JavaScript 库,在过去的一个月中,他们在 npm 中的下载量累计达 200 万次。

查看英文原文: Underscore and Lodash Discuss Merging


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-06-19 07:137141
用户头像

发布了 63 篇内容, 共 133.2 次阅读, 收获喜欢 38 次。

关注

评论

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

Visio Viewer for Mac(Visio文件查看工具)v3.1.0激活版

Rose

DeFi新纪元:加密货币交易与筹码换手创新玩法

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

Set A Light 3D Studio for Mac(3D摄影棚布光工具)v2.58d永久试用版

Rose

Reallusion Cartoon Animator 2D动画设计制作软件 v4.51.3511.1中文激活版

Rose

ABBYY FineReader PDF 15 for Mac(ocr文字识别软件)v15.2.13中文激活版

Rose

Acrobat Pro DC 2024 PDF编辑转换器 v24.001.20604中文激活版

Rose

研发视角浅谈R2流量回放测试

京东科技开发者

Python 性能分析的几个方法,找到你代码中的那个她!

我再BUG界嘎嘎乱杀

Python 编程 后端 性能分析 开发语言

使用coconutBattery Plus, 您始终了解当前的电池健康状况。

Rose

AI+制造丨引领智能制造迈向新纪元

用友BIP

Ableton Live 11 Suite for Mac v11.3.11中文版 音乐制作软件

Rose

双良集团:不断进阶的数智化

用友BIP

【YashanDB知识库】表收集统计信息默认阈值引起SQL执行效率差

YashanDB

yashandb 崖山数据库

给你安利一个程序员上岸公务员的开源项目

不在线第一只蜗牛

开源 程序员 上岸

探讨篇(四):分布式数据访问解决方案

京东科技开发者

Acrobat Pro DC 2021 for Mac(专业PDF编辑软件)v2021.007.20091中文版

Rose

增速迅猛| 焱融科技跻身中国文件存储市场份额排名报告

焱融科技

软工智库|低代码篇(五)——低代码开发平台有何建议?

电子标准院软工研究室

复杂表单一键填充,让信息输入更轻松

HarmonyOS SDK

HarmonyOS

Tableau Desktop 2019 最好用的数据分析工具 mac软件

Rose

Java 在成本资源控制下, 千万级别数据查询优化

伤感汤姆布利柏

PDF Checkpoint for mac(PDF自动化批处理工具)v1.9.21激活版

Rose

C/C++ 集成开发环境(IDE) JetBrains CLion 2023 for Mac v2023.3.2中文激活版

Rose

2024 MWC 上海 | 七牛云 Miku 快直播发布

七牛云

直播 直播低延迟

Win11镜像下载

Rose

FL studio 20破解版,水果音乐制作编曲软件

Rose

AI时代的阅读革新!微信读书基于腾讯云ES的“AI问书”RAG最佳实践

腾讯云大数据

ES ;RAG

软工智库|低代码篇(四)——低代码开发平台如何应用?

电子标准院软工研究室

面试前:各方面都匹配 面试后:恐怕是凉了

王中阳Go

Go 数据库 面试 后端 面经

攻防演练需持之以恒,智能运维提升企业长期安全防御能力

用友BIP

Underscore和Lodash商讨合并事宜_开源_David Iffland_InfoQ精选文章