您的位置:首页>>电脑软件
搜索: 标题  

【用友iUAP专家讲堂】解析React Native内部通讯机制

发布时间:2015-07-16 11:32:14  来源:互联网 马太航  编辑:阳光不锈  背景:

  React Native是Facebook发布的一个用JavaScript开发移动应用的开源框架。框架目前只支持iOS平台,但一经推出,便受到国内外移动开发者的追捧,从GitHub上的统计数据看,自React Native开源至今的3个月时间,已经有170位贡献者对项目进行了1790余次的提交。

  在React Native之前,基于JavaScript开发跨平台移动应用的框架已经有很多,这些框架都采用构建WEB页面的方式,但由于DOM性能和浏览器单线程处理等问题,构建的应用在移动端体验差,虽然开发成本很低,仍然无法取代原生开发。React Native与其他框架不同,它使用JavaScript来调用原生控件,使应用运行在本地环境中,从而使应用在移动端的体验堪比原生应用。

  React Native由于使用JavaScript调用原生控件,运行过程中需要JavaScript和原生语言进行频繁、高效的通讯。这一过程极其复杂,下面以iOS为例详述其过程。

React Native内部通讯机制图解

  React Native使用了iOS自带的JavaScriptCore作为JS解析的引擎,但并未使用其提供的OC-JS(OC,即Object-C;JS,即JavaScript)通讯机制,而是自己实现了一套机制。在通讯机制中有一个称为模块配置表的配置文件,这个文件中记录了OC中可供JS调用的模块和方法。在OC和JS中分别有一个通讯桥,每个通讯桥中存储着一份模块配置表,这是OC-JS通讯的基础。详细的调用过程是这样的:

  1、事件触发JS函数调用,事件包含定时事件、加载事件等。

  2、JS通讯桥对调用进行分析,把调用的模块、方法解析成模块ID、方法ID

  3、JS通讯桥根据返回函数生成返回函数ID,再联合调用参数、模块ID、方法ID生成一个消息模型,然后将模型置于消息队列中,等待OC来读取。

  4、OC通讯桥调用JS的某个方法时,JS在返回数据中插入消息队列的数据,OC在消息队列中将消息模型取出。

  5、OC根据模块配置表解析消息模型,找到OC中对应的模块和方法。

  6. RCTModuleMethod对象对传递的JS参数进行转换和组装处理,然后通过NSInvocation动态调用OC方法,同时RCTModuleMethod生成block回调对象。

  7、OC方法调用技术后,获取调用的返回值和返回函数ID,执行block回调。

  8、block执行JS消息队列固有的函数回调方法,并将返回函数ID和返回值传递给该方法。

  9、JS消息队列根据返回函数ID,找到对应的JS函数。

  10、调用该JS函数,传递返回值,完成回调。

  在第4步中并未采用JS直接调用OC的方式,而是使用了消息队列来存储JS对OC的调用并等待OC读取,这表明在React Native中,OC与JS通讯是单向的。这一过程是建立在严格的事件响应机制基础上的:只有在事件触发的时候,JS代码才会执行,由于采用了原生控件,事件触发的时候,OC程序必然也会运行,OC去调用JS,便可将JS消息队列中的消息全部读取并处理。在这个过程中,JS充当了数据源的角色,OC是控制器,调用JS数据源并进行解析,然后映射到对应OC模块上。

  以上过程便是JavaScript和Object-C通讯的全部过程细节,整个过程的关键点在于:模块化、ID传递、封装调用、事件响应。这一个过程确实很复杂,但得益于JavaScriptCore和Object-C的高性能,相比于WEB页面的DOM操作,这一过程运行极为高效,体验几乎媲美原生应用。




返回网站首页 本文来源:互联网

本文评论
360预警:电邮将成网络安全重灾区 损失或超50亿
2月6日,360互联网安全中心发布预警:电子邮件将成为今年的网络安全重灾区,电邮安全事件将给我国半...
日期:02-06
“纵情文件修复”敲诈者病毒爆发 360紧急响应
春节刚过,敲诈者病毒又迎来了一轮大规模爆发。据360安全卫士官方微博公告,名为“纵情文件修...
日期:02-06
微软:Win10是兼容性最好的Windows系统
每当有新系统推出时,用户是否接受它的一个标准就是兼容性,如果这方面太差,用起来会无比折磨人。
日期:02-06
Win10正式干掉Win7!仅仅是在美国
虽然微软宣称根据自己的数据,Windows 10份额已经超越Windows 7成为第一大操作系统,但我们更愿意相...
日期:02-04
假冒支付宝集福增强工具锁死电脑 木马趁机敲竹杠
临近春节,木马也想趁着热点捞些过节钱。最近,360安全卫士拦截到一类伪装成“支付宝集福增强...
日期:01-25
Win10新版15014改善“蓝光过滤”功能:强力护眼
上周五,微软向快速会员推送了Windows 10 Build 15014最新预览版,新功能包括支持设置任意颜色为主...
日期:01-24
新年新气象 乐视视频APP领先版V2.1.3完美“靓”相
近日,乐视视频APP领先版(即乐视超级手机中的乐视视频APP)V2.1.3新版完美“靓”相—...
日期:01-17
微软:放弃你的Windows 7吧 它已经老了
Windows 8的失败让不少人对于微软的新操作系统有所戒备——即便Windows 10在很大程度上解...
日期:01-17
微软:Windows 7安全架构过时 面临巨大风险
作为微软最成功的操作系统之一,一经推出之后便受到了用户的青睐,以至于后续的Windows 8和Windows ...
日期:01-16
微软调整Win10最低配置要求:32位最小容量降低1G
目前Windows 10系统正式发布已经一年多时间,微软在不断增加新功能的同时也不停对系统性能进行优化...
日期:01-09
Windows 10去年年终全球份额24.36% 远落后于Win7
北京时间1月3日消息,据外媒报道,市场研究公司NetMarketShare发布的最新数据显示,Windows 10...
日期:01-03
年底日拦截最高达7万 《烧脑24小时》揭敲诈者木马传播机制
近期,一部关于安全专家对抗敲诈者木马的网络短剧《烧脑24小时之隐形的敲诈者》在安全行业内引发了...
日期:2016
三星换机助手已支持Win10 Mobile:从WP转战安卓更轻松
12月29日消息,虽然微软CEO纳德拉此前已经强调不会放弃Win10 Mobile手机业务,但其实已经有不少原来...
日期:2016
263企业网盘全功能深度测评
随着数据信息化的快速发展,在办公生活中,IT信息管理方面,产生的问题越来越多。同时工作中产生的...
日期:2016
听歌也可以“声色俱全”,原来你是这样的QQ音乐
作为一名听歌的“老司机”,可以说为了听喜欢的爱豆的歌曲,把市面上凡是叫上名的音乐APP...
日期:2016
微软:Windows 10安装量超过Windows 7
第三方市场份额统计数据显示Windows 10市占率稍微超过20%,而Windows 7继续领先市场,市占率近45%,...
日期:2016
颜值爆表 乐视视频V6.11视觉大升级体验更清爽
2016年岁末将至,乐视视频以焕然新装来回馈用户一年来的支持。近日,乐视视频V6.11新版上线,最亮眼...
日期:2016
搜狗输入法携手汤达人,打造文字新玩法
搜狗输入法作为国民输入法,一直深受大众喜爱。除了在产品上创意十足,搜狗输入法也一直寻求多样化...
日期:2016
回忆杀 QQ音乐“那年今日”带你暖心穿越
“我们相视而笑,伴着音乐漫步街上,这不只是曾经,还有现在,未来“—— 那年...
日期:2016
支付安全成全行业焦点 腾讯电脑管家联手银行企业共建安全网购环境
近年来,网购已经越来越日常化,网络消费呈现爆发增长势头。然而,在电商巨头们交易额屡创新高、消...
日期:2016