http://www.csdn.net/article/2015-11-27/2826345-compare-React-Native-with-ExMobi

原生组件通信原理

React Native通过JavaScript编写APP的方式,乍看以为是以webview提供的现成的JS与原生语言之间的互调,但是如果当我们调试一个React Native程序的时候,在debug视图中是不会看到任何webview被调用的痕迹。所以,实际上React Native并没有使用现成的与webview的通信方法,而是使用了更直接的JS运行环境,比如在iOS中为系统自带的JavaScriptCore。这与Phonegap这类以webview为主的界面展现与本地能力调用的模式有本质上的区别,也是确保React Native高性能和高效率的基础。

有了这个核心基础,我们再来看看React Native是如何通过JS来挂钩到原生UI和本地能力的。

 

从上图很容易可以看到,开发者通过JS去调用一个React Native提供的方法,实际需要先经过两个桥接封装类,一个JS的桥接,另一个是原生的桥接。两个桥接类之间就是通过前面提到的JS运行环境来通信。JS桥接类的作用是将开发者的调用行为加入到React Native的模块调用队列,同时生成一个回调的ID。Native桥接类的作用是将队列里的调用行为取出来根据模块找到对应的原生UI或者本地能力的函数来执行,并将执行的结果通过回调的ID逐步传递到开发者的JS回调函数中。也就是经过这两个桥接类的相互作用,建立起了JS函数与原生能力的调用序列。

最新文章

  1. CSRF 攻击
  2. Android 自定义表格显示数据
  3. 入门级的按键驱动——按键驱动笔记之poll机制-异步通知-同步互斥阻塞-定时器防抖
  4. sql基本操作
  5. Android 学习之异常总结--java.lang.IllegalStateException:Could not execute method of the activity
  6. BZOJ4068 : [Ctsc2015]app
  7. MyEclipse — Maven+Spring+Struts+Hibernate 整合 [学习笔记-3]
  8. 你应该知道的JavaScript中NaN的秘密
  9. 网易新闻优化APK下载链接
  10. Class类文件结构、类加载机制以及字节码执行
  11. bzoj3123
  12. boost库之geometry
  13. 计蒜客蓝桥杯模拟赛五J. 程序设计:放置守卫
  14. sublime text 3 配置python IDE
  15. 社群公会GangSDK:程序员入行AI领域需要哪些技能?
  16. Fabric单节点安装备忘
  17. Spring-boot中@ConfigurationProperties,@Value,@PropertySource
  18. day_4流程控制之分支结构循环结构及for循环
  19. 3150luogu洛谷
  20. 解决webstorm拉取Vue项目时卡顿,及内存爆满问题

热门文章

  1. C#操作Redis String字符串
  2. WPF 资源字典
  3. vuex 实现vue中多个组件之间数据同步以及数据共享。
  4. C++测验代码
  5. 设置固定ip后无法上公网
  6. 互联网轻量级框架SSM-查缺补漏第三天
  7. Idea创建Hibernate bean类和.xml文件
  8. JavaEE之动态页面技术(JSP/EL/JSTL)
  9. cf1043C. Smallest Word(贪心)
  10. 盒模型的属性丶display显示丶浮动