0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

React Native重构即将完成,改善版本有何不同?

如意 来源:百家号 作者: 读芯术 2020-07-01 14:43 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

2015年,React Native被首次推出,使用ReactJS框架开发原生跨平台应用程序。该框架获得了社区的大力支持,并凭借其Web同行的名声逐渐普及,但其实该平台的原始设计并非没有缺点。

2018年,Facebook团队宣布他们正试图解决多年来开发人员遇到的这些最常见问题,进行ReactNative重构。这样的重构改善体现在哪些方面呢?本文将从性能和开发速度方面来谈一谈。

原构造

ReactNative曾被称作“不依赖于平台”的应用框架。从某种程度上讲,该框架的主要目标是让开发人员编写Javascript React代码,而React Native可以在幕后部署其机制,以将Reactreconciliation tree转录成可由原生基础设施解释的内容。它能够:

· 正确显示UI

· 访问原生功能

通常,Android/ iOS生态系统目前的机制如下所示:

每个React Native应用程序中运行着3个并行线程:

· 阴影线程用来设计布局。它使用Facebook自带的Yoga布局引擎来设计flexbox布局并将其发送回UI线程。

· JS线程读取和编译所有JavaScript代码以及执行应用程序大部分业务逻辑。将所有Javascript代码融汇到一个文件中,并翻译任何其他Javascript语法(例如JSX或TS),然后将此代码发送到JavaScriptCore引擎以便运行。

· 原生线程是运行原生代码的位置。每当需要更新UI或访问本机函数时,它将与JS线程连接。它分为原生UI和原生模块。原生模块在启动时都处于预备状态,这意味着即使ReactNative使用蓝牙模块,该蓝牙模块也始终处于运行状态。

使用桥接器可以连接JS线程和原生线程,在后台,C++模块围绕一个异步队列构建。每当它从任一方获取数据时,都会将数据序列化为字符串并将其通过队列传递,并在到达时反序列化。

这意味着所有线程都依赖于跨网桥传输的异步JSON消息,并且这些消息发送到任一端,期望它们在将来的某个时间引发响应,但它还存在拥塞的风险。

每当浏览者在原生环境中拖动滚动条时,信息都会异步发送到JavaScript领域,但是原生环境不会等待Java脚本执行工作并将其以另一种方式发送回去。这会造成延迟,屏幕上出现信息之前会一片空白。

同样,布局设计需要经过很多次才能在屏幕上显示,因为在原生设计布局之前,它需要想尽办法到达Yoga引擎,当然这也意味着要通过桥接器。可以看到异步序列化来回发送JSON数据是怎样造成性能问题的,但是如何使JavaScript与本机通信呢?这就要靠JSI发挥作用了。

新架构

重构版的ReactNative将逐渐弃用桥接器,转而采用新元素——JavaScript接口(JSI)。JSI的一些改进令人惊喜,首先就是JS软件包不再依赖JSC。换句话说,现在可以轻松地将JSC引擎与其他(可能更高性能的)JavaScript引擎互换,例如V8。

第二个改进针对的是这种新架构的基础:“通过使用JSI,JavaScript可以保存对C++主机对象的引用并对其调用方法。JavaScript和原生领域将真正彼此了解。”

这也意味着JSI将允许所有线程之间完全互操作。通过共享所有权,JavaScript代码可以直接从JS线程运行原生方法,不需要将要传递的消息序列化为JSON,这消除了桥接器上的所有拥塞和异步问题。

除了显著改善不同线程之间的通信之外,这种新架构还可以直接控制原生模块。这意味着我们可以在需要时使用原生模块,而不是在启动时将它们全部引导一次。这大大提高了性能,节省了启动时间。

在掌握了C ++的强大功能的基础上,懂得如何将React Native用于定位非常大的系统面板是很容易的。

推出这么多年,ReactNative已过时、待清理、需维护的部分已经积攒很多了,React Native框架已经清除了某些功能,诸如Webview或AsyncStorage之类的模块正逐渐从React Native核心中移出,将转变为社区管理的存储库。

凭借新的精简核心模块以及JavaScript代码与原生代码之间强大的互操作性机制,React Native重构将实现许多性能改进和更全方位的开发人员工作流。它计划在2020年第四季度之前完成全面重组,更好的性能和全新开发体验十分令人期待。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 可重构
    +关注

    关注

    0

    文章

    8

    浏览量

    9219
  • ui
    ui
    +关注

    关注

    0

    文章

    211

    浏览量

    22465
  • reactjs
    +关注

    关注

    0

    文章

    4

    浏览量

    4749
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Vue3 + React18 + TS4入门到实战 系统学习3大热门技术 | 更新完结

    Vue3 + React18 + TS4入门到实战 系统学习3大热门技术 | 更新完结 前端技术升级:Vue3新特性+React18并发+TS4类型精讲 前端开发领域正经历着一场深刻的技术变革
    发表于 03-30 15:18

    阿丘科技亮相上海视觉展:四大核心产品首度合体,彰显AI-Native硬核实力

    3月25日至27日,上海新国际博览中心即将迎来机器视觉行业盛会——VisionChina2026上海机器视觉展暨研讨会。作为国家级重点专精特新“小巨人”企业与“AI+工业”领域的先行者,阿丘科技将携
    的头像 发表于 03-19 10:08 778次阅读
    阿丘科技亮相上海视觉展:四大核心产品首度合体,彰显AI-<b class='flag-5'>Native</b>硬核实力

    小型自重构机器人能不能帮忙做一个?

    最低、能直接动手做**的版本。 --- # 一、你能做出的效果(超酷) 这种叫 **模块化自重构机器人(微型蛇形/组合式)** 你做出来可以: - 像小蛇一样**爬行** - 多个模块**自动
    发表于 02-21 19:24

    【OFDR】实时感知、动态重构与历史状态回溯!昊衡科技-三维场重构软件

    三维场重构软件三维场重构软件通过TCP协议获取传感数据,并实时重构三维温度/应变场。软件支持导入三维模型(.wrl格式)与二维图片(.jpeg格式),实现“数据-空间位置”的精准映射。二维直线
    的头像 发表于 01-29 17:40 1479次阅读
    【OFDR】实时感知、动态<b class='flag-5'>重构</b>与历史状态回溯!昊衡科技-三维场<b class='flag-5'>重构</b>软件

    端到端与模块化自动驾驶的数据标注要求何不同?

    [首发于智驾最前沿微信公众号]自动驾驶技术路径的每一次技术转向,都伴随着底层数据处理逻辑的彻底重构。过去,智驾系统普遍依赖模块化设计,将驾驶任务拆解为感知、预测、规控等独立环节;而今,以端到端技术为
    的头像 发表于 01-27 09:48 1115次阅读
    端到端与模块化自动驾驶的数据标注要求<b class='flag-5'>有</b><b class='flag-5'>何不</b>同?

    SeaVerse发布全球首个AI Native平台,“All in AI Native”引领AI创作前瞻革命

    SeaVerse强调的"All in AI Native"对于既存的AI创作者和创作团队来说注定是场"前瞻革命"。
    的头像 发表于 01-14 17:41 1490次阅读

    QCon·上海站HarmonyOS开发者技术分论坛:共探鸿蒙开发新机遇

    论坛(以下简称“论坛”)成功举办,论坛聚焦 AI 实践落地与技术赋能,邀请多位华为技术专家深度解读并分享 HarmonyOS AI辅助开发能力、多设备适配解决方案、场景化赋能、性能调优、场景能力共建以及React Native性能优化等方面的实战内容,帮助开发者快速了解前
    的头像 发表于 10-24 15:59 984次阅读
    QCon·上海站HarmonyOS开发者技术分论坛:共探鸿蒙开发新机遇

    AES和SM4算法的可重构分析

    一、AES和SM4算法特点分析 基于前面几篇分享,我们对AES和SM4的算法流程了较为清晰的认识,接下来对AES和SM4算法的共同点进行分析,得出二者的可重构设计思路。 首先,这里把AES
    发表于 10-23 07:26

    UFS 5.0存储标准即将完成

    电子发烧友网综合报道,JEDEC固态技术协会宣布即将完成新一代UFS 5.0存储标准。UFS5.0专为需要高性能且低能耗的移动应用和计算系统而设计,计划提供比其前代更快的资料存取速度和更佳的性能表现
    的头像 发表于 10-10 08:23 8135次阅读
    UFS 5.0存储标准<b class='flag-5'>即将</b><b class='flag-5'>完成</b>!

    ZeroNews 的 TLS 终止方案何不同?

    TLS(传输层安全协议)终止是指在网络代理节点(如反向代理服务器)上结束加密连接的过程。当公网用户通过 HTTPS 访问服务时,流量首先到达代理节点,在此处完成 TLS 解密,再将明文流量转发至后端服务。
    的头像 发表于 08-25 12:09 652次阅读
    ZeroNews 的 TLS 终止方案<b class='flag-5'>有</b><b class='flag-5'>何不</b>同?

    鸿蒙5开发宝藏案例分享---点击完成时延分析

    ?** 鸿蒙完成时延优化实战指南:让你的应用丝滑如飞!** 在移动端开发中, 完成时延就是用户体验的生命线 !今天带你深入鸿蒙完成时延优化,揭秘官方文档中的宝藏技巧,让你的应用告别卡顿,流畅起飞
    发表于 06-12 17:03

    USB4和TBT4平台的ccg6sf/df配置设置何不同?

    :CYPD6128-48LQXI_notebook_dualapp_rkl_config.cyacd)以支持 USB4 平台? 1. USB4 和 TBT4 平台的 ccg6sf/df 配置设置何不同? 2. 对于 USB4 平台,我能否使用 HOST SDK3.6 来
    发表于 05-22 06:27

    一种低翘曲扇出重构方案

    翘曲(Warpage)是结构固有的缺陷之一。晶圆级扇出封装(FOWLP)工艺过程中,由于硅芯片需通过环氧树脂(EMC)进行模塑重构成为新的晶圆,使其新的晶圆变成非均质材料,不同材料间的热膨胀和收缩程度不平衡则非常容易使重构晶圆发生翘曲。
    的头像 发表于 05-14 11:02 1644次阅读
    一种低翘曲扇出<b class='flag-5'>重构</b>方案

    HDMI接口芯片失效原因分析和HDMI接口芯片改善措施与选型

    HDMI接口芯片 失效原因分析和改善措施     HDMI,全称 High Definition Multimedia Interface, 即高清多媒体接口。自问世以来,HDMI 历经了多次版本
    的头像 发表于 05-09 11:16 3.5w次阅读
    HDMI接口芯片失效原因分析和HDMI接口芯片<b class='flag-5'>改善</b>措施与选型

    tscircuit - 电路开发的 React 范式​ 用TypeScript、React和 AI工具构建电子产品

    用 TypeScript、React 和 AI 工具构建电子产品。
    的头像 发表于 04-30 18:18 1781次阅读
    tscircuit - 电路开发的 <b class='flag-5'>React</b> 范式​   用TypeScript、<b class='flag-5'>React</b>和 AI工具构建电子产品