写点什么

深入了解 React 新引擎:React Fiber

  • 2017-05-09
  • 本文字数:1080 字

    阅读完需:约 4 分钟

Facebook 正在以流行的 JavaScript 框架 React 为基础开发一个全新的架构。这个名为 React Fiber 的全新设计改变了检测变更的方法和时机,借此可改进浏览器端和其他渲染设备的响应速度。

这一全新架构最初已于2016 年7 月公开发布,其中蕴含着过去多年来Facebook 不断改进的工作成果。该架构可向后兼容,彻底重写了React 的协调(Reconciliation)算法。该过程可用于确定出现变更的具体时间,并将变更传递给渲染器。

实际上该团队在单线程JavaScript 引擎的基础上构建了一种可划分优先级的协作式任务调度器。在最初的协调算法(现已更名为 Stack Reconciler )中,Virtual DOM diff 会一次性处理整个组件树:

重点在于,Stack Reconciler 始终会一次性地同步处理整个组件树。Stack Reconciler 无法暂停,因此如果更新较为深入并且可用 CPU 时间有限,这种做法并非最优化的。

与之相对的 Fiber Reconciler 则有着截然不同的目标:

  • 能够将可中断的任务拆分成块。
  • 能够对进程中的工作划分优先级、重新设定基址(Rebase)、恢复。
  • 能够在父子之间来回反复,借此为 React 的 Layout 提供支持。
  • 能够通过 render() 返回多个元素。
  • 为错误边界提供了更好的支持。

简单来说,此时不在需要等待变更传播到整个组件树,React Fiber 可以知道如何时不时暂停一下,检查是否有其他更重要的更新。这种调度能力主要基于 requestIdleCallback 的使用,而这是一种 W3C 候选推荐标准

在 React Conf 2017 大会上,Lin Clark 通过名为 React Fiber 简介的演讲循序渐进介绍了新协调器的独到之处。

大部分情况下,开发者无需担心代码的适配问题,但也有少量应用依赖以特定顺序进行的生命周期钩子(Lifecycle hook)。由于顺序已经无法保证,因此可能会遇到一些问题。

“为确保这一特性不会影响应用”,Clark 称:“Fiber 团队正在制定更为平缓的升级路径”。

Dan Abramov写到,React 团队认为大部分 React 应用不会因为第 16 版而遇到问题:

React 16(正在开发中)是一次革新,但也使用了相同的公开 API。对于 Facebook 所使用的超过 30,000 个(!)组件,其中只有少量需要改动,并且这少数组件主要被一些已经不再支持或没有正式记录在案的行为所使用。因此可以说完全可以保证 99.9% 的兼容性。这也让我们确信 React 16 基本上也可以直接适用于你的代码。

Fiber 将在 React 16 中首次登场,第 16 版不仅包含新的协调引擎,而且提供了可串联使用的全新渲染器(例如 ReactDOM、React Native)。同时 isfiberreadyyet.com 提供了测试套件的最新结果。截至撰写本文时,已顺利通过了 92.2% 的测试。

阅读英文原文 React Fiber: A Closer Look at the New Engine of React

2017-05-09 19:003379
用户头像

发布了 283 篇内容, 共 110.3 次阅读, 收获喜欢 62 次。

关注

评论

发布
暂无评论
发现更多内容

30% 代码由 AI 生成,单测准确率达到 90%,我在阿里巴巴国际站推广通义灵码

阿里巴巴云原生

阿里云 云原生 通义灵码

30% 代码由 AI 生成,单测准确率达到 90%,我在阿里巴巴国际站推广通义灵码

阿里云云效

阿里云 云原生 通义灵码

开发者生产力提升的API终极指南

幂简集成

API

华为云Flexus X实例创新柔性算力!直击中小企业数字化转型痛点

轶天下事

数字转型得力伙伴:华为云Flexus X实例打造云计算应用新标杆

轶天下事

可观测产品剖析——日志统一管理

嘉为蓝鲸

日志监控 日志管理 日志采集

解锁携程美食与景点数据接口:打造个性化旅行体验的秘密武器

tbapi

携程API 携程景点列表接口 携程酒店API 携程美食列表API

GitHub星标4000!清华大牛的CTF竞赛入门指南,真的太香了!

我再BUG界嘎嘎乱杀

黑客 网络安全 信息安全 PWN CTF竞赛

双倍性能、跃级体验!华为云Flexus X实例助力企业轻松上云

轶天下事

顺应数字化趋势!Flexus X实例助力中小企业开启数字转型“必修课”

轶天下事

中小企业数字化转型难点凸显,华为云Flexus X实例革新上云体验

YG科技

华为云Flexus X实例全方位为中小企业护航,加速迈进“专精特新”

YG科技

性能易用二合一!华为云Flexus X实例加快中小企数字转型

YG科技

华为云Flexus X实例性能出众,降本显著,促进中小企业高质量发展

YG科技

SpringBoot项目中HTTP请求体只能读一次?试试这方案

小明同学的学长

springboot java

华为云Flexus X实例,以创新技术打造中小企业高质量发展新引擎

轶天下事

DARPA计划“消灭”C语言代码

我再BUG界嘎嘎乱杀

网络安全 编程语言 C语言 内存安全 DARPA

自动化业务状态码设计

三七互娱后端技术团队

效率 自动化 状态码

生成式 AI 时代数据库与大模型的融合探索

编程猫

华为云Flexus X实例:最高6倍算力提升,满足中小企业多元需求

轶天下事

华为云Flexus X实例创新柔性算力技术,助力企业提质、增效、降本

轶天下事

重塑云服务,华为云Flexus X实例破解云服务传统难题

YG科技

充分发挥数字经济赋能效应,Flexus X实例协助企业高效转型

轶天下事

直击中小企业痛点!Flexus X实例让中小企业也可以上好云、用好云

YG科技

掀起性能巨浪:华为云Flexus X实例定义业务负载多面手

YG科技

激发云服务效能,华为云Flexus X实例助力破除中小企上云痛点

YG科技

论如何利用仿真技术轻松攻克电子产品热流体仿真难题

Altair RapidMiner

设计 汽车 电子产品 仿真 altair

数字化转型正当时!华为云Flexus X实例助力中小企业高效便捷上云

轶天下事

顺应数字化浪潮,华为云Flexus X实例助力中小企业破局崛起

轶天下事

华为云Flexus X实例依托生态优势,破解中小企业数字化转型困局

YG科技

华为云Flexus X实例全方位创新,开拓企业数字化发展新边界

YG科技

深入了解React新引擎:React Fiber_JavaScript_David Iffland_InfoQ精选文章