native react 中 JavaScript 和 naitive 的通讯机制(1)
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)