lodash和下划线之间的区别

为什么有人会更喜欢lodash.js或underscore.js实用工具库?

Lodash似乎是下划线的替代品,后者的时间更长。

我认为这两者都很出色,但我对他们如何工作以进行有教育的比较还不够了解,我想更多地了解这些差异。


我创建了Lo-Dash为数组,字符串,对象和arguments objects1提供更一致的跨环境迭代支持。 它已成为Underscore的超集,提供更一致的API行为,更多功能(如AMD支持,深层克隆和深度合并),更全面的文档和单元测试(在Node,Ringo,Rhino,Narwhal,PhantomJS ,浏览器),大型数组/对象迭代更好的整体性能和优化,以及定制构建和模板预编译实用程序的更多灵活性。

由于Lo-Dash更新频率比lodash underscore更频繁,因此提供了一个lodash underscore版本以确保与最新的lodash underscore稳定版本兼容。

有一次,我甚至被推到Underscore,部分原因是Lo-Dash负责提高30多个问题; 在Underscore v1.4.x +中着陆错误修复,新功能和性能提升。

此外,至少有3个Backbone样板默认包含Lo-Dash,而Lo-Dash现在在Backbone官方文档中提到。

查看Kit Cambridge的帖子,向Lo-Dash说“Hello”,以便更深入地分析Lo-Dash和Underscore之间的差异。

脚注:

  • Underscore对数组,字符串,对象和arguments对象的支持不一致。 在较新的浏览器中,Underscore方法忽略数组中的空洞,“Objects”方法迭代arguments对象,字符串被视为类似数组,并且方法正确地迭代函数(忽略其“原型”属性)和对象(迭代像“toString”和“valueOf”),而在旧版浏览器中则不会。 此外,像_.clone这样的_.clone方法可以在数组中保留空洞,而另一些像_.flatten则不会。

  • Lo-Dash的灵感来自于下划线,但现在是最好的解决方案。 您可以进行自定义构建,具有更高的性能,支持AMD并具有很多额外功能。 在jsperf上检查这个Lo-Dash vs Underscore基准和..这个关于lo-dash的真棒帖子:

    使用集合时最有用的功能之一是简写语法:

    var characters = [
      { 'name': 'barney', 'age': 36, 'blocked': false },
      { 'name': 'fred',   'age': 40, 'blocked': true }
    ];
    
    // using "_.filter" callback shorthand
    _.filter(characters, { 'age': 36 });
    
    // using underscore
    _.filter(characters, function(character) { return character.age === 36; } );
    
    // → [{ 'name': 'barney', 'age': 36, 'blocked': false }]
    

    (取自lodash文档)


    除了约翰的回答,还有关于lodash(我迄今为止都被视为“我也是”强调的)的读物,并且看到了性能测试,阅读源代码和博客文章,这些优于下划线:

  • 这与速度无关,因为它关乎速度的一致性(?)

    如果您查看下划线的源代码,您会在头几行看到下划线 - 回到许多函数的本地实现上。 尽管在理想的世界中,如果您看一下这些幻灯片中给出的某些性能链接,这将是一个更好的方法,但不难得出这样的结论:“本机实现”的质量因浏览器而异 - 到浏览器。 Firefox在某些功能上速度很快,并且在某些Chrome中占主导地位。 (我想会有一些场景在IE中占主导地位)。 我相信最好选择一个代码,在浏览器中的表现更加一致。

    早些时候阅读博客文章,而不是相信它,通过运行基准评判自己。 现在我惊呆了,看到一个简单的原生函数Array.every Chrome中的Array.every快得多100%到150%。

  • lodash中的额外功能也非常有用。

  • 至于Xananax高度评价的评论,暗示了对下划线代码的贡献:拥有良好的竞争总是更好,不仅会保持创新,还会促使您保持自己(或图书馆)的良好状态。
  • 以下是lodash之间的差异列表,它是下划线 - 构建是您的下划线项目的替代替代品。

    链接地址: http://www.djcxy.com/p/4751.html

    上一篇: Differences between lodash and underscore

    下一篇: Install grunt