React Native原理
ReactJS:JSX控制虚拟DOM,通过React框架,最终渲染到浏览器的真实DOM中;
React Native:JSX代码通过RN框架的编译后,通过Bridge实现了与原生框架之间的通信。调用RN提供的API就相当与通过Bridge调用原生的API。由于RN的底层是React的框架,如果是UI层的变更,会先渲染为虚拟DOM,diff后计算出变更的JSON文件,最终Native层将JOSN文件渲染在原声APP页面元素上,实现state与props的变更导致原生App上的UI变化。
React Native使用JavaScriptCore作为JSVM,中间通过JSON与Bridge进行通信。如果在chrome上调试,那么所有的JavaScript代码将在Chrome中的V8引擎执行,与原生代码通过websocket进行通信。
JSBridge
JSBridge简单来讲就是给JavaScript提供调动Native的接口,让前端也可以调用摄像头、地理位置等。JSBridge是Native与非Native直接的双向通道。
(1)JS向Native发送消息:调用相关功能,通知Native当前JS的状态等;
(2)Native向JS发送消息:回溯调用结果、消息推送、通知JS当前Native状态等。