我想知道将Lodash包含在这3个函数[main-thread
,map()
,reduce()
]中还是仅仅使用它们的ES6版本更好。
我更喜欢使用Lodash功能,它对我的用例来说有点简单。但是,我知道使用ES6功能可能会带来性能优势。
还想知道Lodash是否与ES6更向后兼容?
有关如何测试我的实施效果的建议?
是否继续使用Lodash或使用ES6的建议?
答案 0 :(得分:8)
Lodash是一个很好的工具,如果你有更复杂的算法,它更具可读性等。它内置了许多任务的功能,这些功能在原生ES6中不那么容易实现,它真的很方便,可以让你免于头痛。但对于你提到的简单任务,我会使用ES6。正如@Mayday在评论中所说,这是未来。
如果你只为这些任务使用Lodash,我建议你摆脱它,这意味着你有一个较少的依赖,这几乎总是一件好事(用户不必下载lodash,因为原生地图,reduce,filter在浏览器中实现)。是的,现在您可能需要使用捆绑器或转换器来使您的代码与es5兼容,但这是一个开发依赖,它不会在生产中出现,并且它会在一段时间内得到支持并且您赢了# 39;甚至还需要这些额外的步骤。
要测试代码,请参阅以下答案: How do you performance test JavaScript code?
Google Chrome和Firefox也有非常好的分析器:https://developers.google.com/web/tools/chrome-devtools/evaluate-performance/reference#record
如果你想比较native和lodash函数,我建议你运行几百万次实现的相同函数并测量开始和结束之间的时间(console.time https://developer.mozilla.org/en-US/docs/Web/API/Console/time),我认为你应该也可以对它们进行一些测量,因为结果可能取决于很多其他事情。我想我也会避免使用for循环,因为它们经过高度优化并且可能会扭曲结果。
修改强>
正如@TamasHegedus在评论中指出的那样,这些功能都在ES5规范中,因此您甚至不需要捆绑器或翻译器,它将在本地工作。
答案 1 :(得分:1)
Js perf可用于测试性能 - 如this test from 2015所示,它显示lodash的Map明显快于原生地图功能。我不确定这种性能差异到底有多大。
Web应用程序因加载大量代码而感觉很慢而不是JavaScipt太慢而更常见。如果这些是您计划在Lodash中使用的唯一功能,我建议使用Native es6方法。