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之间的差异。
脚注:
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中的额外功能也非常有用。
以下是lodash之间的差异列表,它是下划线 - 构建是您的下划线项目的替代替代品。
链接地址: http://www.djcxy.com/p/4751.html上一篇: Differences between lodash and underscore
下一篇: Install grunt