Blog.

React Native 启动发生了什么?

LiuuY

excalidraw-2020130144852 (1)

基于 0.5.9 版本

  1. 创建 RootView,这个是所有 APP 内容的容器。

  2. 创建 Bridge Interface,用于和 C++ 实现的 Bridge 通信。

  3. Bridge 包含 Native To JavaScriptJavaScript To Native 两部分。

  4. 创建 JavaScript ThreadNative Module Thread,分别运行 APP 的 JavaScript 代码,和 Native Module 代码。

  5. 创建 Native ModuleCustom Module

  6. 创建 Global Object,类似于浏览器的 window 对象,它有两个重要的值:ModuleConfig 对象(包含了Native ModuleCustom Module 的配置)和 nativeFlushQueueImmediate 方法(用于 JavaScript 和 Bridge 传递数据),它可以被 JavaScript 和 Bridge 访问。

  7. 创建 BatchedBridge 对象,用于将数据传到 Bridge(使用 nativeFlushQueueImmediate 方法)。

  8. 创建 NativeModules 对象,里面包含了原生提供方法,JavaScript 可以直接调用。