native react 中 JavaScript 和 naitive 的通讯机制(1)

作者 : 开心源码 本文共1180个字,预计阅读时间需要3分钟 发布时间: 2022-05-12 共165人阅读

bridge_future-5.jpg

作为一个 JavaScript 开发人员,在开发 native react 时候我们可能没有必要关心如何写naitive 代码。但是确实有必要理解 JavaScript 与native 代码是如何建立关系的。

mainImage-full-4226771.jpg

那么许多场景需要我们去接触少量 native 代码,

  • 需要整合第三方 SDK
  • 假如您应用追求高性能
    这时候需要自己写少量 native 板块来实现最求性能的目的
  • 正在构建是需要肯定兼容性的应用
  • 需要调用平台的系统 API
    有时候我们不想用现有的板块来实现调用平台系统的 API 时候,也需要开发原生板块。

当然理解少量react native 内部机制无疑是有意开发 react native

下面图是 react native 线程结构图,在 native 这一侧,Main(主线程)为 UI 线程,shadow queue 这个线程负责位置的计算,更重要的是每一板块都有自己线程为 Native Modules。在 JavaScript 这一侧我们有 JavaScript 的线程,native 和 js 是可以进行线程通讯的。

018.JPG

这个 json 对象表示 native 的板块

{  moduleName:'ExampleModule',  constants: {},  methods:['chainReact','bridgingIsAwesome'],  promiseMethods:[0],  syncMethods[1]}

在运行时 JavaScript 是掌握所有 native 板块,这些板块会以全局变量的形式被注入到 VM 的 JavaScript (context)上下文对象。现在可能你可能会感觉到少量困惑,相信随着分享进一步深入,你会理解的更多。记住上面这个 json 对象表示一个 native 的板块,

让我们深入看一下 react native 内部机制,当客户触摸屏幕进行操作,触摸事件从 native 侧发起,通过 bridge 将触摸信息从 native 传递给 JavaScript ,而后 javascript 对信息进行反馈,所有信息都是经过 bridge 进行传递

019.JPG

这些信息包括创立视图,进行网络请求,重新渲染组件等等。这是为什么我们理解 bridge 的重要性。所有经过 bridge 的通讯都是异步的,所以通讯都是通过方法以及方法回调来实现的。另一个值得我们注意的所有信息需要进行序列化后才可以进行传递。而且是批量进行的这样可以提高性能。

020.JPG

其实这种通讯和用户端和服务端进行通讯很像。所有这些消息都是由消息队列来解决的。native 持有消息队列,响应于 javascript。JavaScript 是影响性能的重点,当消息从消息队列来 JavaScript 这一侧,我们应该确保 Javascript 不阻塞,从而不会引起消息队列的拥堵。

traffic-hotspots.jpg

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » native react 中 JavaScript 和 naitive 的通讯机制(1)

发表回复