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





1. 旧 NativeModule 的问题
传统 React Native:
JavaScript
|
| JSON Bridge
|
Native (Java/Kotlin / Objective-C/Swift)
调用过程:
-
JS 调用 Native 方法
-
参数序列化成 JSON
-
通过 Bridge 传递
-
Native 执行
-
返回结果再次序列化
缺点:
-
通信有额外开销
-
类型检查弱
-
所有模块启动时初始化
-
只能异步调用为主
(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
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)
更多推荐



所有评论(0)