是否有用于处理对象和数组的良好实用程序库。
例如函数,如:extend、forEach、复制对象/数组等,
node.js 环境中常见的是什么?我想知道 underscore.js 有没有像样的替代品?
是否有用于处理对象和数组的良好实用程序库。
例如函数,如:extend、forEach、复制对象/数组等,
node.js 环境中常见的是什么?我想知道 underscore.js 有没有像样的替代品?
underscore.js是这类东西的一个很好的默认值。这是一个关于兼容性问题的线程,可能很方便。
编辑,根据您的要求提供下划线以外的内容:
据我所知,当您正在寻找额外的数组操作(很像 jQuery 用于 DOM 操作)时,下划线已成为事实上的标准。Joyent 维护了一个相当彻底的 node.js 兼容模块清单,唯一看似可比的实用程序似乎是一个名为 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、Narwhal 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 旨在支持这种编码风格。