RN需要一个JS的运行环境, 在IOS上直接使用内置的javascriptcore, 在Android 则使用webkit.org官方开源的jsc.so。 此外还集成了其他开源组件,如fresco图片组件,okhttp网络组件等。
RN 会把应用的JS代码(包括依赖的framework)编译成一个js文件(一般命名为index.android.bundle), , RN的整体框架目标就是为了解释运行这个js 脚本文件,如果是js 扩展的API, 则直接通过bridge调用native方法; 如果是UI界面, 则映射到virtual DOM这个虚拟的JS数据结构中,通过bridge 传递到native , 然后根据数据属性设置各个对应的真实native的View。
从入口代码开始分析入口文件:
import { AppRegistry } from 'react-native';
AppRegistry.registerComponent('wiseDerma', () => App);
这样,js 就在 app 端注册好了,接着就等待Native事件驱动渲染JS端定义的APP组件。
通信机制 JS调用javajava部分:
只需要在函数上加上ReactMethod注解就可以了
js部分:
JS调用java 使用通过扩展模块require(‘NativeModules’)获取native模块,然后直接调用native公开的方法
var { NativeModules } = require('react-native');
NativeModules.initialize
JS 调用require(‘NativeModules’)实际上是获取MessageQueue里面的一个native模块列表的属性。
java调用JS未完待续…
参考资料https://cloud.tencent.com/developer/article/1751479
https://cloud.tencent.com/developer/article/1036325



