TurboModule 是 **React Native 新架构(New Architecture)**中的一种新型原生模块系统,用来替代旧的 NativeModules。它解决了旧 Bridge 架构中 JS 和 Native 通信效率低、类型不安全、启动慢等问题。(GitHub)

简单理解:

TurboModule = 更快、更类型安全、按需加载的 Native Module。

Image

Image

Image

Image

Image

1. 旧 NativeModule 的问题

传统 React Native:

JavaScript
    |
    | JSON Bridge
    |
Native (Java/Kotlin / Objective-C/Swift)

调用过程:

  1. JS 调用 Native 方法

  2. 参数序列化成 JSON

  3. 通过 Bridge 传递

  4. Native 执行

  5. 返回结果再次序列化

缺点:

  • 通信有额外开销

  • 类型检查弱

  • 所有模块启动时初始化

  • 只能异步调用为主

(Mintlify)


2. TurboModule 的架构

TurboModule 使用:

  • JSI (JavaScript Interface)

  • Codegen 自动生成代码

  • Lazy Loading(懒加载)

结构:

JavaScript
    |
    | JSI
    |
TurboModule
    |
Native Code

优势:

① 更快通信

JS 可以通过 JSI 更直接地调用 Native:

JS → JSI → C++ → Native

减少 JSON Bridge 的转换成本。(GitHub)

② 懒加载

旧方式:

App启动
 |
加载所有 Native Modules

TurboModule:

App启动
 |
只加载需要的 Module
 |
第一次使用时初始化

降低启动时间和内存占用。(Mintlify)

③ TypeScript 类型安全

以前:

NativeModules.MyModule.foo()

如果方法不存在,运行时才发现。

TurboModule:

先定义 Spec:

import {TurboModule, TurboModuleRegistry} from 'react-native';

export interface Spec extends TurboModule {
  multiply(a: number, b: number): number;
}

export default TurboModuleRegistry.get<Spec>(
  'MyModule'
);

然后 Codegen 自动生成:

  • iOS 接口

  • Android 接口

  • C++ glue code

(reactnative.dev)


3. 创建 TurboModule 流程

典型步骤:

Step 1:定义 JS/TS Spec

例如:

NativeCalculator.ts

import type {TurboModule} from 'react-native';
import {TurboModuleRegistry} from 'react-native';

export interface Spec extends TurboModule {
  add(a:number, b:number): number;
}

export default TurboModuleRegistry.get<Spec>(
  'Calculator'
);

Step 2:运行 Codegen

React Native 根据 Spec 生成:

Android:

NativeCalculatorSpec.java

iOS:

NativeCalculatorSpec.h
NativeCalculatorSpec.mm

Step 3:实现 Native

Android:

class CalculatorModule :
    NativeCalculatorSpec() {

    override fun add(
        a:Int,
        b:Int
    ):Int {
        return a+b
    }
}

iOS:

@implementation Calculator

RCT_EXPORT_MODULE()

- (NSInteger)add:
   (NSInteger)a
   b:(NSInteger)b
{
    return a+b;
}

@end

4. TurboModule 和 Fabric 的关系

React Native 新架构主要两个部分:

组件 作用
TurboModule JS 调用 Native
Fabric JS 控制 Native UI
JSI JS 和 C++ 通信层
Codegen 生成类型安全代码

简单:

          JavaScript
              |
        ----------------
        |              |
  TurboModule       Fabric
        |              |
 Native Logic      Native UI

5. 什么时候应该使用 TurboModule?

适合:

✅ 调用系统 API

例如:

  • 蓝牙

  • NFC

  • 摄像头

  • 文件系统

  • 加密

  • 传感器

✅ 高性能计算

例如:

  • 图像处理

  • 音频处理

  • AI 推理

不适合:

❌ 普通业务逻辑

比如:

  • 登录状态

  • 网络请求

  • Redux 数据管理

这些用 JS/TS 更简单。


6. TurboModule 和普通 Native Module 对比

NativeModules TurboModule
架构 Legacy Bridge New Architecture
通信 JSON Bridge JSI
加载 全部加载 按需加载
类型检查 运行时 Codegen
性能 较低 更高
C++支持 有限 原生支持
同步调用 困难 支持

(Mintlify)


一句话总结:

TurboModule 是 React Native 新架构里的高性能 Native 扩展机制,通过 JSI + Codegen + Lazy Loading,让 JavaScript 更直接、更安全、更高效地调用 Android/iOS 原生代码。 (GitHub)

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐