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

    浏览量

    9019
  • ui
    ui
    +关注

    关注

    0

    文章

    204

    浏览量

    21339
  • reactjs
    +关注

    关注

    0

    文章

    4

    浏览量

    4553
收藏 人收藏

    评论

    相关推荐

    使用SSR构建React应用的步骤

    使用SSR(Server-Side Rendering,服务器端渲染)构建React应用的步骤通常包括以下几个阶段: 一、项目初始化与配置 创建React项目 : 可以使用Create React
    的头像 发表于 11-18 11:30 206次阅读

    Taro鸿蒙技术内幕系列(一):如何将React代码跑在ArkUI上

    基于 Taro 打造的京东鸿蒙 APP 已跟随鸿蒙 Next 系统公测,本系列文章将深入解析 Taro 如何实现使用 React 开发高性能鸿蒙应用的技术内幕。
    的头像 发表于 10-25 17:24 231次阅读
    Taro鸿蒙技术内幕系列(一):如何将<b class='flag-5'>React</b>代码跑在ArkUI上

    重构改善既有代码的设计」实战篇

    背景 在软件开发的世界里,代码重构是提升项目质量、适应业务变化的关键步骤。最近,我重新翻阅了《重构改善既有代码的设计 第二版》,这本书不仅重新点燃了我对重构的热情,还深化了我的理解:
    的头像 发表于 08-14 10:42 207次阅读
    「<b class='flag-5'>重构</b>:<b class='flag-5'>改善</b>既有代码的设计」实战篇

    Matter和Z-Wave何不同?它们的应用哪些?

    Labs(亦称“芯科科技”)广泛支持智能家居行业中较具潜力的两种现有标准:Matter 和 Z-Wave,并制作本篇博文帮助开发人员了解这两项标准的特性、它们之间何不同、它们对智能家居用户和开发人员的意义,以及对应的解决方案和设计考量。
    的头像 发表于 07-24 16:45 576次阅读

    请问IDF中的pthread和Task相比何不同?

    IDF中的 pthread 和 Task 相比何不同?
    发表于 06-24 06:46

    Verilog的版本哪些

    电子发烧友网站提供《Verilog的版本哪些.docx》资料免费下载
    发表于 05-31 11:29 0次下载

    Traveo II B-H中的SECURE和SECURE_WITH_DEBUG生命周期阶段何不同?

    Traveo II B-H 中的 SECURE 和 SECURE_WITH_DEBUG 生命周期阶段何不同?
    发表于 05-21 07:07

    商汤科技即将推出日日新大模型5.0粤语版本

    在盛大的“新质企业家联合会”成立典礼上,商汤科技副总裁、智慧城市与商业事业群总裁张果琲宣布了一项重要消息。商汤科技即将推出日日新大模型5.0的粤语版本,这一新版本将基于大装置和强大的技术能力,为粤语语言处理带来显著的提升。
    的头像 发表于 05-13 10:58 553次阅读

    实锤!腾讯终于拥抱鸿蒙生态,微信鸿蒙原生版本即将上线

    系统 。甚至网友表示, 微信不适配鸿蒙系统我就卸载QQ ,用华为的畅连。其实不然,微信作为国民级社交软件是肯定会适配鸿蒙系统的,至于适配的进度则还需要时间。不过近日,消息称微信即将支持鸿蒙原生系统
    发表于 04-30 21:14

    鸿蒙OS开发实例:【Native C++】

    使用DevEco Studio创建一个Native C++应用。应用采用Native C++模板,实现使用NAPI调用C标准库的功能。使用C标准库hypot接口计算两个给定数平方和的平方根。在输入框中输入两个数字,点击计算结果按钮显示计算后的数值。
    的头像 发表于 04-14 11:43 2503次阅读
    鸿蒙OS开发实例:【<b class='flag-5'>Native</b> C++】

    异地组网与传统网络何不同?SD-WAN组网与传统网络何不同?

    异地组网与传统网络何不同?SD-WAN组网与传统网络何不同? 异地组网与传统网络不同之处 异地组网是一种网络架构,可以将远程办公地点、分支机构和数据中心等多个地理位置的设备连接起来
    的头像 发表于 03-27 16:57 533次阅读

    院士称全球芯片产业格局即将重构

    中国工程院院士邬贺铨在大会上对RISC-V的发展给予了高度评价。他表示,RISC-V正进入应用爆发期,成为芯片指令集架构的第三极,为全球芯片产业格局的重构带来了重大机遇。
    的头像 发表于 03-14 15:41 5528次阅读

    铜线和铝线制作的变压器何不同?

    铜线和铝线制作的变压器何不同? 铜线和铝线制作的变压器许多不同之处。虽然它们都是用于电力传输和转换的重要元件,但两者在导电性能、成本、重量和制造工艺等方面存在差异。下面将详细介绍铜线和铝线制作
    的头像 发表于 02-02 09:36 3530次阅读

    光纤和光缆何不同之处?

    很多人会有这样的疑问,光纤和光缆何不同之处?主要是因为光纤和光缆这两个名词容易引起混淆。在严格的定义下,光纤和光缆是两种不同的东西,然而在现实生活中,许多人仍然会混淆这两者。为了更好地理解光纤和光缆之间的区别,我们一起来看一下。
    的头像 发表于 01-15 17:01 793次阅读

    噪音抑制与主动降噪:何不同之处?

    噪音抑制与主动降噪:何不同之处?
    的头像 发表于 11-30 17:29 648次阅读
    噪音抑制与主动降噪:<b class='flag-5'>有</b><b class='flag-5'>何不</b>同之处?