【AICon】探索八个行业创新案例,教你在教育、金融、医疗、法律等领域实践大模型技术! >>> 了解详情
写点什么

深入了解 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:003179
用户头像

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

关注

评论

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

网络安全kali web安全 Kali之msf简单的漏洞利用

学神来啦

网络安全 渗透测试 WEB安全 kali kali Linux

VuePress 博客优化之开启 Algolia 全文搜索

冴羽

Vue 搜索 vuepress 博客搭建 Algolia

python方法——defaultdict详解

Wjq

Python 字典 3月程序媛福利 3月月更 defaultdict

Committer 蔡正昕专访:勇敢迈出第一步,做开源没有那么难

Apache Pulsar

架构 云原生 中间件 Apache Pulsar 开源社区

模块 9 作业(毕业设计)

miliving

超级群、群组、聊天室,IM 产品的场景化「特异功能」

融云 RongCloud

即时通讯 IM

2022官方文档部署MAVEN最新最全

北极的大企鹅

中间件 环境安装 部署与维护

Go语言实战之切片的内部实现和基础功能

山河已无恙

Go 语言 3月月更

融云通信周边能力上新啦!一键 Get 美颜、CDN 服务

融云 RongCloud

CDN 人脸识别

猿桌派第 2 季回归,报名赢现场录制机会!

融云 RongCloud

程序员

数字孪生:如何撑起一个万亿市场的产业变革?

知心宝贝

行业资讯 数字孪生 冬奥 3月月更

教你如何搭建一个骗子举报/信息查询的平台

H

搭建平台 网络安全信息安全、

基于区块链技术的超级账本(Hyperledger) - 从理论到实战

Jerry Wang

区块链 智能合约 云平台 Go 语言 2月月更

好书推荐 ——《噪声:人类判断的缺陷》

天择

好书推荐 认知偏差 噪声 3月月更

模块九

撿破爛ぃ

架构训练营

专注自主研发,加速大数据基础软件国产化进程

星环科技

数据库 大数据 基础软件

2021年第4季度规模达1381.8亿元!跨境电商结合酒店场景将成亮点

易观分析

跨境电商

图文详解:Kafka到底有哪些秘密让我对它情有独钟呢?

浅羽技术

活动预告 | ArchSummit全球架构师峰会

第四范式开发者社区

人工智能 机器学习 数据库 架构师 热门活动

乘数智之风,为世界造舟筏:女性在当下如何创造?

脑极体

Flutter 构建常见的App页面框架

岛上码农

flutter ios 安卓 移动端开发 3月月更

Python 学习路线(2022)

AlwaysBeta

Python django 编程语言 学习路线 编程入门

gRPC 简介实践

yuexin_tech

gRPC

华为被卡脖子,到底卡的是什么?

坚果

还在用递归,试试迭代吧

爱笑的小雨

英特尔Sierra Forest,市场最需要的能效核至强处理器

科技新消息

同人于野,平常无边 | 对话 StarRocks 的三位女性工程师

StarRocks

数据工程师 38妇女节

安全实战:webshell的几种免杀方式

网络安全学海

黑客 网络安全 信息安全 渗透测试 安全漏洞

Discuz! ML远程代码执行(CVE-2019-13956)

喀拉峻

网络安全

商品库存管理和秒杀系统设计(19/100)

hackstoic

技术方案 互联网应用技术方案

把家电科技产出摆出来!三家实力一目了然

脑极体

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