2017-06-04 40 views
3

我想知道是否有更好的包括Lodash这3个函数[map()reduce()filter()]或者只是使用他们的ES6版本。Lodash VS的JavaScript内建了对地图,减少过滤器

我更喜欢使用Lodash函数,这对我的用例来说更简单一些。但是,我知道使用ES6功能可能会带来性能方面的好处。

也想知道Lodash是否更向后兼容ES6?

关于如何测试我的实现的性能的建议?

是否继续使用Lodash或使用ES6的建议?

+1

ES6是未来...我会完全去那个 – Mayday

+0

@五月感谢您的迅速反应 –

+1

Lodash是一个很好的工具,如果你有更复杂的算法,更具可读性等,他们已经建立在很多任务的功能中,它非常方便。它可以让你避免很多头痛。但对于像你提到的简单任务,我会使用ES6。因为@五月天说这是未来,我想这也是现在:D如果你能摆脱Lodash,你也会失去一个依赖,这几乎总是一件好事。 – godzsa

回答

7

如果你有更复杂的算法,更具可读性等,Lodash是一个不错的工具。它内置了很多任务的功能,这些任务在原生ES6中并不是很容易实现,它非常方便并可以让你免于很多头痛。但对于像你提到的简单任务,我会使用ES6。正如@五月天在评论中所说,这是未来。

如果您仅将Lodash用于这些任务,我建议您摆脱它,这意味着您有一个较少的依赖关系,这几乎总是一件好事(用户不必下载lodash,因为本地地图,减少,筛选器在浏览器中实现)。是的,现在您可能需要使用打包器或翻译器来使您的代码与es5兼容,但这是一种dev-dependency,它不会在生产中出现,并且它将在一段时间内得到支持,而且您甚至不会需要这些额外的步骤。

为了测试你的代码中看到这些问题的答案: How do you performance test JavaScript code?

也是谷歌Chrome和Firefox有很好的剖析:https://developers.google.com/web/tools/chrome-devtools/evaluate-performance/reference#record

如果你想比较本地和lodash功能,我建议你运行相同的功能实现了几百万次,并测量开始和结束之间的时间(console.time https://developer.mozilla.org/en-US/docs/Web/API/Console/time),我认为你也应该对它们进行一些测量,因为结果可能取决于很多其他的事情。我想我也会避免循环,因为它们高度优化并且可能会扭曲结果。

编辑

由于@TamasHegedus在评论中指出,这些功能都在ES5规范,所以你甚至不需要一个捆绑,或翻译,它将本地工作。

1

Js perf可用于测试性能 - 如this test from 2015所示,其显示lodash的Map显着快于本地地图功能。我不确定这种性能差异的程度如何。

由于加载大量代码而导致Web应用程序感觉速度较慢,而不是JavaScipt太慢。如果这些是您计划从Lodash使用的唯一函数,那么我会建议使用Native es6方法。