【问题标题】:Why is Facebook using react instead of more performant native JS? [closed]为什么 Facebook 使用 react 而不是性能更高的原生 JS? [关闭]
【发布时间】:2018-09-22 07:55:19
【问题描述】:

请阅读question (Update 5) 上的此序列以了解上下文:

React + Performance = ? article 由 Paul Lewis 从 2015 年 7 月开始展示 React 比手工编写的普通 JavaScript 慢的示例 对于 Flickr 图片的无限列表,尤其是 在移动设备上意义重大。这个例子表明,每个人都应该始终 针对特定用例和特定目标平台的测试性能 和设备。

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

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

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

【问题讨论】:

  • 让圣战开始
  • @MysterX 我不这么认为。何时选择 vanilla 或 react.js 很明显
  • 也许唯一真正知道 Facebook 为何使用 react 的人就是 Facebook。 reactjs.org/blog/2013/06/05/why-react.html
  • 我们应该坚持写汇编
  • 根据我的经验,我认为 Facebook 并不真正关心性能高于功能......当然还有数据。

标签: javascript facebook reactjs performance dom


【解决方案1】:

用户体验在这里并不重要。 React.js 旨在以快速的方式轻松组织 UI。

React.js 带来了这些价值:

  • 跨浏览器代码(vanilla JS 没有像合成事件那样的足够抽象)
  • 为聊天等特定功能编写代码要容易 10 倍
  • 100 倍易于维护。只有一种方法可以做某事 - 因此理解大事背后的业务逻辑要容易很多倍

【讨论】:

  • Facebook 声明他们维护了 50000 个 React 组件。
  • @BoyWithSilverWings 证明好吗?
  • @asiniy Herehere
  • 阅读ReactJS Blog的最后一段
  • @BoyWithSilverWings 非常感谢
【解决方案2】:

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

React 的主要优势在于,它可以让你不再掌控构建 JavaScript 的任务。这允许其他精通 React 的开发人员更容易理解代码,并且还允许快速重构结构良好的 React 类以适应新功能。 React 为您提供了这些功能,同时不会对性能造成巨大影响

【讨论】:

  • 是的,我完全理解你的意思,这就是为什么我也使用 React 而不是普通的 JS。但谈到像 Facebook 这样的大公司,它也针对低延迟互联网速度的人,我认为性能至关重要。 Amazon is thinking about it. 也许这就是Facebook Lite 存在的原因?
  • @luiswill 我认为能够维护代码非常重要,值得牺牲一点性能来实现它
【解决方案3】:

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

【讨论】:

  • 是的,我明白了,但是article 指出使用 vanilla JS 操作 DOM 更快(这是合乎逻辑的)。那么 Facebook 开发人员是否只是为了方便而使用 React 呢?
猜你喜欢
  • 1970-01-01
  • 2015-12-04
  • 2015-04-07
  • 2017-12-07
  • 1970-01-01
  • 2013-08-13
  • 1970-01-01
相关资源
最近更新 更多