写点什么

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

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

关注

评论

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

600多个mindmanager模板素材(思维导图模板合集)

Rose

最佳GTD时间效率工具 OmniFocus Pro 4永久激活版

Rose

集中回答客户关注的数据云场景的四个问题

奇点云

大数据 互联网 数据云

INFINI Labs 产品更新 | Console/Gateway/Agent 等产品开源发布首个版本

极限实验室

console Gateway agent loadgen easysearch

FonePaw Android Data Recovery Mac 安卓手机数据恢复软件中文版

Rose

阿里云技术公开课直播预告:基于阿里云 Elasticsearch 构建 AI 搜索和可观测 Chatbot

阿里云大数据AI技术

人工智能 elasticsearch chatbot rag AI搜索

微信多开 WechatTweak for Mac(微信多开、消息防撤回工具)安装教程

Rose

外媒编辑评选今年最佳游戏TOP10 《黑神话:悟空》第二

阿拉灯神丁

游戏

Mac用户必备!StarUML助你高效建模设计

Rose

【干货】商品计划驱动零售盈利性的数据利器

第七在线

鸿蒙登录页面好看的样式设计-HarmonyOS应用开发实战与ArkTS代码解析【HarmonyOS 5.0(Next)】

申公豹

HarmonyOS

Newtonsoft.Json/Json.NET:灵活处理序列化中的意外错误

代码忍者

【代码合并神器】Sublime Merge,让版本控制更高效!

Rose

NAS局域网移动端视频播放神器 nPlayer for Mac 中文激活版

Rose

别划走!选择无代码平台的10个理由!

积木链小链

制造业 无代码

简化的架构治理:使用 NocoBase 构建应用程序目录

NocoBase

开源 低代码 无代码 Web应用 治理架构

电商独立站运营:构建成功的数字化商业据点

科普小能手

数据挖掘 电商 独立站 API 接口 API 测试

解码通用 AI Agent:七步构建你的智能系统

Baihai IDP

程序员 AI AI Agent

HarmonyOS 5.0 (Next)应用开发实战:使用ArkTS构建开箱即用的登录页面【HarmonyOS 5.0(Next)】

申公豹

HarmonyOS

从GPT到o3:Next-token Prediction 的核心奥秘(下)

JustYan

人工智能 大模型 openai GPT 生成式AI

环境监测管理系统(源码+文档+部署+讲解)

深圳亥时科技

Bartender 5:Mac菜单栏整理大师,提升工作效率必备!

Rose

芯盾时代统一身份安全管理的闭环能力建设

芯盾时代

iam 统一身份管理平台 特权账号管理

开箱即用的个人主页页面开发实战—基于HarmonyOS 5.0 (Next)和ArkTS的实现【HarmonyOS 5.0(Next)】

申公豹

HarmonyOS

试验数据管理系统(源码+文档+部署+讲解)

深圳亥时科技

Perfectly Clear Video:专业级视频清晰化,轻松打造视觉盛宴!

Rose

WiFiSpoof:MAC地址随心换,网络安全再升级!

Rose

LUMEVIEW会议一体机:开启智能会议新征程

cts喜友科技

视频会议

电力能源管理系统(源码+文档+部署+讲解)

深圳亥时科技

合合信息:探索视觉内容安全新前沿

Yan-英杰

Python 人工智能 图像处理

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