Node.js模块开发人员应该使用Underscore.js吗?

时间:2013-05-06 19:01:35

标签: node.js underscore.js

我正在使用我的第一个Node.js模块,并且必须执行常见的实用程序,例如检查类型,循环等。

这些东西的原生JS非常难看。 Underscore.js使其更具可读性并且还增加了许多新功能。但如果我不需要新的东西,我应该使用Underscore还是只是努力工作?

谢谢!

5 个答案:

答案 0 :(得分:5)

在node.is中,你可以依赖于一些ES5的东西,数组迭代函数和像isArray这样的实用函数。在我的节点模块中,我从未使用下划线,并且由于像map这样的数组迭代函数,forEach从不需要使用下划线或lodash。

如果我真的需要它,我不会避免使用下划线依赖。 node.js平台依赖于小模块,具体取决于几个小模块本身。那么为什么不依赖于下划线。

答案 1 :(得分:4)

我认为没有理由避免使用让您的生活更轻松的模块。而且,恰好如此,undercore.js是npm注册表中最依赖的包(截至本答复的时候,根据https://npmjs.org/)。所以,没有理由避免它。

答案 2 :(得分:2)

我从未在真实项目中使用下划线或异步。一旦你知道如何编写好的javascript代码就没有必要使用任何帮助库。例如,应该在serie中执行并且是异步的函数,使用简单的“递归while循环”非常容易,您不需要加载任何库。

但最后这是个人偏好。如果您对它们感到满意,请使用外部库。

建议:不要查看github启动或npm安装来决定使用哪个模块。受欢迎并不意味着好。我已经尝试了很多流行的模块,其中大约40%只是糟糕/错误/不太有用。有很多不受欢迎的模块非常好。受欢迎有助于做出决定,但你不应该因为它很受欢迎而安装和使用模块。

答案 3 :(得分:2)

Underscore做正确的事情,首先检查所有本机es5方法,这意味着你不会在本机方法的性能损失方面有太多的东西被替换为基本上做同样事情的较慢的非本机版本(code here):

var
    nativeForEach      = ArrayProto.forEach,
    nativeMap          = ArrayProto.map,
    nativeReduce       = ArrayProto.reduce,
    nativeReduceRight  = ArrayProto.reduceRight,
    nativeFilter       = ArrayProto.filter,
    nativeEvery        = ArrayProto.every,
    nativeSome         = ArrayProto.some,
    nativeIndexOf      = ArrayProto.indexOf,
    nativeLastIndexOf  = ArrayProto.lastIndexOf,
    nativeIsArray      = Array.isArray,
    nativeKeys         = Object.keys,
    nativeBind         = FuncProto.bind;

注意:早先分配给“Proto”变种的原型。

那就是说,我很确定V8最多(如果不是全部的话)。作为客户端的开发者,我很高兴只是使用原始的裸体事物,而不必考虑如何或最好的库,这次拖动IE踢和尖叫石头时代,提供内置的方法并不像DOM API那样丑陋,我会说这些不是。

如果下划线为你做的比上面更多,那么一定要使用它。如果没有,我认为这是浪费空间。它在浏览器上真正做的就是为旧版浏览器提供后备方法,这些方法在Node中不是一个关注点。虽然它很轻松。如果你在我的团队中并且不想编写由下划线唯一处理的某些东西的自己的版本但我更喜欢在我自己的代码中使用直接本机方法名称/ args等原则,我不会反对。在任何我不需要的地方都不喜欢依赖。

答案 4 :(得分:0)

我在与浏览器共享的模块中使用下划线,而不依赖于ES5。此外,Underscore还有一些非常有用的方法,这些方法在ES5中不可用,所以阅读他们的手册页是有意义的。