React Native 不是黑科技,咱们写的代码老是以一种很是合理,能够解释的方式的运行着,只是绝大多数人没有理解而已。接下来咱们以android 平台为例,简单的解释一下 React Native 的原理。javascript
首先要明白的一点是,即便使用了 React Native,咱们依然须要 andriod平台的相关组件框架,调用的是 java代码。总之,JavaScript 只是辅助,它只是提供了配置信息和逻辑的处理结果。React Native 与 Hybrid 彻底没有关系,它只不过是以 JavaScript 的形式告诉 java 该执行什么代码。html
其次,React Native 可以运行起来,全靠 java和 JavaScript 的交互。对于没有接触过 JavaScript 的人来讲,很是有必要理解 JavaScript 代码如何被执行。java
咱们知道 C 系列的语言,通过编译,连接等操做后,会获得一个二进制格式的可执行文,所谓的运行程序,实际上是运行这个二进制程序。 而 JavaScript 是一种脚本语言,它不会通过编译、连接等操做,而是在运行时才动态的进行词法、语法分析,生成抽象语法树(AST)和字节码,而后由解释器负责执行或者使用 JIT 将字节码转化为机器码再执行。整个流程由 JavaScript 引擎负责完成。而React Native采用的js引擎就是著名的javascriptCore引擎,至于js引擎的介绍能够参考 js引擎介绍android
文字说了一大堆,可能还不如大佬们画的一张图: 网络
启动流程图:框架
大佬们的图仍是有些复杂,对于初入门的小白来讲,下图或许更合适函数
经过上图不难看出,通讯的核心部分就是Bridge和Webkit这两块东西了。学习
说几个比较重要的方法:this
学习了3种定义组件的方法3d