zoukankan      html  css  js  c++  java
  • React Native IOS源码初探


      原文链接
      http://www.open-open.com/lib/view/open1465637638193.html

     每个项目都有一个入口,然后进行初始化操作,React Native 也不例外。一个不含 Objective-C 代码的项目留给我们的唯一线索就是位于 AppDelegate 文件中的代码:

    RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
                                                          moduleName:@"reading"
                                                   initialProperties:nil
                                                       launchOptions:launchOptions];

      用户能看到的一切内容都来源于这个 RootView ,所有的初始化工作也都在这个方法内完成。

      在这个方法内部,在创建 RootView 之前,React Native 实际上先创建了一个 Bridge 对象。它是 Objective-C 与 JavaScript 交互的桥梁,后续的方法交互完全依赖于它,而整个初始化过程的最终目的其实也就是创建这个桥梁对象。

      初始化方法的核心是 setUp 方法(在RCTBridge.m下),而 setUp 方法的主要任务则是创建 BatchedBridge 。  

    - (void)setUp
    {
       ...
      [self createBatchedBridge];
      RCT_PROFILE_END_EVENT(0, @"", nil);
    }

      

      BatchedBridge 的作用是批量读取 JavaScript 对 Objective-C 的方法调用,同时它内部持有一个 JavaScriptExecutor ,顾名思义,这个对象用来执行 JavaScript 代码。

      创建 BatchedBridge 的关键是 start 方法,它可以分为五个步骤:

    1. 读取 JavaScript 源码
    2. 初始化模块信息
    3. 初始化 JavaScript 代码的执行器,即 RCTJSCExecutor 对象
    4. 生成模块列表并写入 JavaScript 端
    5. 执行 JavaScript 源码
  • 相关阅读:
    grub
    init
    内核的ramdisk
    kernel信息及其相关命令
    mvc和mvvm模式
    vue从零开始(一)
    echarts自动播放图形
    echarts自定义悬浮框的显示
    typescript入门
    echarts的最外层配置项
  • 原文地址:https://www.cnblogs.com/johnzhu/p/5913595.html
Copyright © 2011-2022 走看看