为什么Facebook使用反应而不是更高性能的原生JS?

时间:2018-04-12 08:42:03

标签: javascript facebook reactjs performance dom

请在question (Update 5)上阅读此序列以了解背景信息:

  2015年7月Paul Lewis的

React + Performance = ? article显示了一个   例如,React比手工编写的vanilla慢   对于无限的Flickr图片列表,尤其如此   在移动设备上显着这个例子表明每个人都应该永远   测试特定用例和特定目标平台的性能   和设备。

我在问自己,为什么Facebook会使用React操纵他们的DOM? 似乎使用vanilla JS操作DOM更快,这是合乎逻辑的,因为React是用JS编写的。

用户体验不比开发人员的人体工程学重要吗?

编辑:例如亚马逊发现了100ms of latency cost them 1% of sales

Vanilla vs React DOM manipulation performance

3 个答案:

答案 0 :(得分:3)

用户体验并不重要。 React.js很容易以快速的方式组织UI。

React.js带来了这些值:

  • 跨浏览器代码(vanilla JS没有像Synthetic events那样有足够的抽象)
  • 更轻松地为聊天等特定功能编写代码
  • 100倍以上更容易维护。只有一种方法可以做某事 - 所以很容易理解大事背后的业务逻辑

答案 1 :(得分:0)

结构良好的Vanilla JavaScript总是比React快,尽管React上的一些扩展已经表明,在渲染速度方面,框架可能会接近VanillaJS。

React的主要优点是它需要完成构建JavaScript的任务。这使得对于熟悉React的其他开发人员可以更容易理解代码,并且还允许快速重构结构良好的React类以适应新功能。 React为您提供这些能力,同时不会对性能产生巨大影响

答案 2 :(得分:0)

更新DOM通常是Web性能的瓶颈。 React试图通过使用称为虚拟DOM的东西来解决这个问题;一个DOM保存在内存中。任何视图更改首先反映到虚拟DOM,然后有效的diff算法比较虚拟DOM的先前和当前状态,并计算应用这些更改的最佳方式(所需的最小更新量)。最后,这些更新将应用于DOM,以确保最小的读/写时间。这是React高性能背后的主要原因。