阿里云飞天发布时刻,领先大模型限免,超7000万 tokens免费体验 了解详情
写点什么

React Native 迎来重大架构升级,性能将大幅提升

  • 2021-07-26
  • 本文字数:1939 字

    阅读完需:约 6 分钟

React Native迎来重大架构升级,性能将大幅提升

7 月 14 日,React Native 核心团队的 Joshua Gross 在 Twitter 说,RN 的新架构已经在 Facebook 内部落地了,并且 99%的代码已经开源。这次的架构升级“蓄谋已久”,Joshua 说他们从 2018 年 1 月就开始规划了。


Facebook 曾在 2018 年 6 月宣布了大规模 重构 RN 的计划和路线图,整个的重构目的是为了让 RN 更轻量化、更适应混合开发,接近甚至达到原生的体验。具体包括以下几个方面:

  1. 改变线程模型。UI 更新不再同时需要在三个不同的线程上触发执行,而是可以在任意线程上同步调用 JavaScript 进行优先更新,同时将低优先级工作推出主线程,以便保持对 UI 的响应。

  2. 引入异步渲染能力,允许多个渲染并简化异步数据处理。

  3. 简化 JSBridge,让它更快更轻量。


这次的架构升级对于 React Native 意义重大,按照官方的说法,这将大幅度提升 RN 的性能。自 RN 发布以来,它大致经历了如下几次的版本迭代(图片来自京东熊文源 GMTC PPT),这一次主要是解决诟病已久的性能问题。



为了进一步了解 RN 这次架构迭代的细节,InfoQ 记者采访了 58 同城资深前端工程师,58RN、Hybrid 框架的负责人蒋宏伟。以下为具体内容。


InfoQ:能给大家介绍下你理解的这次架构升级吗?新的 Fabric 渲染引擎是不是会大幅度提升 RN 的性能?


蒋宏伟:首先说明一下,Fabric 不是渲染引擎,是新架构 UI 渲染部分的代号。React Native 新架构包括三个关键部分:JSI 、TurboModules 和 Fabric。JSI 全称是 JavaScript Interface,代替的是原来的 Bridge。通过 JS 调用 C++,C ++ 调用 Java/OC 的方式,实现了 JS 和 Java/OC 之间的相互操作的。


TurboModules 是新架构 API 部分的代号。得益于 JSI,JavaScript 可以直接调用 Native 模块的方法。类似于在浏览器中,JavaScript 调用获取经纬度方法,实际调用的是 C++ 底层的获取方法。


Fabric 是新架构 UI 渲染部分的代号。得益于 JSI,JavaScript 可以直接操作 Native 的组件,渲染 UI。类似于,在浏览器中,JS 调用 createElement 创建 div 元素,并通过 C++ 底层渲染 UI。


根据现有的性能报告来看,新架构的性能大概提升了一个数量级。这里的性能指的是 API、UI 的操作性能,对首屏性能的影响还有待进一步评估。


InfoQ:新的架构代码全量放到 GitHub 了吗?你们团队计划升级吗?


蒋宏伟:Facebook 内部落地的新架构代码并未完全放到 GitHub。目前,JSI 和 TurboModules 部分已经可以使用,Fabric 部分还要等上一段时间。此外,在新架构的生态方面,比如导航、动画等,估计会有很多变化。


我们今年是有升级计划的,也非常期望能够快点用上 RN 新架构。根据我们以往的升级经验,最需要关心的是新、旧版本兼容性问题。我们内部有 9 个 App,300+ 的项目需要迁移,既需要自动化迁移工具,也需要业务开发和测试同学的配合,还需要一套逐步扩量的方案。


InfoQ:大家经常会拿 RN 和 Flutter 做对比,2019 年 GMTC 上,京东架构师熊文源说,在启动性能上,RN 稍微优于 Flutter,但渲染方面明显不如 Flutter,这是 RN 整个框架的瓶颈。这次升级过后,你会怎么评价两个框架呢?


蒋宏伟:这次升级过后,RN 在性能上能够追平 Flutter。首先,JavaScript 和 Dart 语言上都支持了 AOT 预编译,打个平手。其次,JavaScript 和 Dart 和底层交互都是通过 C++ 进行的,也是打个平手。最后,RN 原生组件绘制有平台的优化加成, 相对于 Flutter 自绘引擎绘制,可能还会好上一些。


其他方面,萝卜青菜各有所爱,前端同学会更喜欢 RN 一些,客户端同学更喜欢 Flutter 一些


InfoQ:你们有调研过 Flutter 吗?


蒋宏伟:我们内部其实有很多 App 在用 Flutter,也开源了 Flutter Fair UI& 模板动态化框架,和 Magpie 开发的工具流。但 58 同城、安居客这种超级 App 没有用 Flutter,主要担心的还是包体积大小和启动内存。


InfoQ:从你视角看,决定跨端框架发展的关键因素是什么?跨端和原生的解决方案之间,未来会是一种怎么样的动态平衡?


蒋宏伟:跨端框架发展的关键因素是净收益的大小。从框架开发者的角度讲,Facebook 内部有 1000+ RN 页面,跨平台带来的净收益肯定很不错。Flutter 我有些不确定,这决定于 Google 的 Fuchsia 操作系统能否成功。从框架使用者的角度讲,生态起不来的,比如 Weex、NativeScript,开发成本太高,净收益可能为负的,这也会反过来制约框架的发展。


有原生就有跨端,二者会一直并存,但跨端方案的市场份额会变的更大。原生解决方案更多是在一些创新的、基础的场景中,比如短视频、VR 或者跨端基础设施。跨端解决方案,比如 Hybrid、小程序、RN、Flutter 等等,会更加成熟,使用的场景也会越多。又因为能够节约开发成本,在现有的场景中会被更多的使用。


京东架构师熊文源曾经在 GMTC 详细分享过 RN 的新架构,如果你想看他的 Slides 的话,可以在视频号给我私信,我单独发你。



2021-07-26 12:1915445
用户头像

发布了 219 篇内容, 共 146.1 次阅读, 收获喜欢 195 次。

关注

评论

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

采购堡垒机时候,选择开源堡垒机还是云堡垒机?

行云管家

云计算 网络安全 等保 堡垒机

谁说操作系统没有创新,这里就有一个,还是分布式的

LAXCUS分布式操作系统

2022年石家庄等保测评公司名单(排名部分先后)

行云管家

网络安全 等保 等保测评 石家庄

为什么企业组织更愿意选择内部私有的IM,而不使用钉钉、微信等软件?

BeeWorks

涨薪密码 | 音视频开发-程序员界的技术皇冠

Yt

音视频 WebRTC ffmpeg 流媒体 SRS流媒体服务器

KubeMeet 新年首站成都开放报名!5 场云原生应用交付开源实践

阿里巴巴云原生

阿里云 开源 云原生 KubeMeet 线下活动

基于STM32设计的指针式电子钟与日历

DS小龙哥

C语言 嵌入式 单片机

基于STM32设计的数字电子秤

DS小龙哥

C语言 嵌入式 单片机

MongoDB高级应用之数据转存与恢复(5)

Tom弹架构

Java 分布式数据库mongodb

在线JSON转YAML工具

入门小站

json

基于STM32设计的校园一卡通项目

DS小龙哥

C语言 嵌入式 单片机

云智慧运维管理平台OMP荣获OSC中国开源项目评选「最受欢迎项目」奖

云智慧AIOps社区

开源项目 运维工程师 运维监控 自动化运维 运维管理

阿里云「低代码音视频工厂」正式上线,为企业用户打造音视频应用开发最短路径

阿里云CloudImagine

音视频 低代码 开发

Java 中 Jackson 的 readTree

HoneyMoose

基于STM32设计的健康检测设备(测温心率计步)

DS小龙哥

C语言 嵌入式 单片机

项目经理如何有效管理项目进度?项目管理3大常见问题及解决方案

优秀

项目管理 项目管理工具

安全架构要参:构建企业适用的安全架构

I

安全架构 企业安全

Linux之chmod命令

入门小站

Linux

关于熟经济和通胀--《香帅中国财富报告》摘录(2/100)

hackstoic

经济

基于STM32设计的计算器(实现基本运算)

DS小龙哥

C语言 嵌入式 单片机

大数据开发之Hive调优技巧

@零度

大数据 hive调优

青藤:东西向流量占比80%,安全如何有效搞定?

青藤云安全

全新UI西游H5决战天宫游戏详细图文架设教程

echeverra

年度盘点丨2021数字化转型优秀案例TOP10

ToB行业头条

洞态漏洞检出测试第二期:NoSQL & LDAP注入漏洞

火线安全

DevSecOps WEB安全 安全漏洞

Mithril.js:一个高性能 JavaScript MVC 框架

devpoint

typescript mvc 1月月更 Mithril.js

看了个女装项目(doge

你?

低代码实现探索(十二)vue.config.js模块打包

零道云-混合式低代码平台

QCon-OPPO大规模CV预训模型技术及实践

安第斯智能云

算法 计算机视觉 预训练模型

CRM系统的六大优势

低代码小观

低代码 CRM 客户关系管理 CRM系统 客户关系管理系统

如何修改Kestrel上传文件的大小

喵叔

1月月更

React Native迎来重大架构升级,性能将大幅提升_开源_小盖_InfoQ精选文章