【发布时间】:2016-09-03 02:12:44
【问题描述】:
是否有很好的实用程序库来处理对象和数组。
例如函数,如:extend、forEach、复制对象/数组等,
node.js 环境中常见的是什么?我想知道 underscore.js 有没有像样的替代品?
【问题讨论】:
标签: javascript node.js utility
是否有很好的实用程序库来处理对象和数组。
例如函数,如:extend、forEach、复制对象/数组等,
node.js 环境中常见的是什么?我想知道 underscore.js 有没有像样的替代品?
【问题讨论】:
标签: javascript node.js utility
underscore.js 是这类东西的一个很好的默认值。 Here's a thread 关于可能很方便的兼容性问题。
编辑,根据您的要求提供下划线以外的内容:
据我所知,当您正在寻找额外的数组操作(很像 jQuery 用于 DOM 操作)时,下划线已成为事实上的标准。 Joyent 维护了一个相当 thorough manifest 的 node.js 兼容模块,唯一看似可比较的实用程序似乎是一个强调柯里化的 experimental library called fjs(从源代码来看,大部分功能都来自于扩展下划线函数) )。那里可能还有其他东西,但据我所知,下划线的渗透力和成熟度一无所知。
还有一个编辑 - 如果您很好奇,这里有一些较旧的库,但它们的维护有所下降 - valentine、wu.js、Functional 和 Sugar。功能性和情人节可能会瘦一点; wu.js 看起来差不多,而且糖更胖。
【讨论】:
lodash 是您可能还想考虑的“下划线.js 的替代品*”。
Lo-Dash v0.7.0 至少在 Chrome 5-21、Firefox 1-15、IE 6-9、Opera 9.25-12、Safari 3-6、Node.js 0.4.8-0.8.8 中进行了测试、独角鲸 0.3.2、RingoJS 0.8 和 Rhino 1.7RC5
【讨论】:
具体扩展,可以使用Node内置的util._extend()函数。
var
extend = require('util')._extend,
x = {a:1},
y = extend({}, x);
Node的_extend函数源码:https://github.com/joyent/node/blob/master/lib/util.js#L563
【讨论】:
看看 Ramdajs:http://ramdajs.com/0.22.1/index.html
Ramda 的主要特点是:
Ramda 强调更纯粹的功能风格。不变性和 无副作用功能是其设计理念的核心。 这可以帮助您使用简单、优雅的代码完成工作。
Ramda 函数是自动柯里化的。这使您可以轻松 只需不提供最终功能即可从旧功能构建新功能 参数。
Ramda 函数的参数排列方便 用于咖喱。要操作的数据一般最后提供。
最后两点一起使构建函数变得非常容易 一系列更简单的函数,每个函数都转换数据和 将它传递给下一个。 Ramda 旨在支持这种风格 编码。
【讨论】: