React Native(RN)跨平台 App 架构

下面从整体架构、核心模块、通信机制、性能优化、工程实践 几个层面,系统讲解 React Native(RN)跨平台 App 架构,适合中大型项目参考。


一、React Native 整体架构概览

React Native 的核心思想是:

用 JavaScript 编写业务逻辑,通过桥接(Bridge / JSI)调用原生能力

架构分层(经典架构)

复制代码
┌──────────────────────────┐
│       JS 业务层           │  React + Redux/Zustand
├──────────────────────────┤
│     JS Engine (Hermes)   │
├──────────────────────────┤
│        Bridge / JSI       │  通信层
├──────────────────────────┤
│      Native UI / API      │  Android / iOS
└──────────────────────────┘

新架构(Fabric + TurboModule)

React Native 正在全面迁移到 新架构

  • JSI(JavaScript Interface):直接内存访问,无序列化

  • Fabric:同步 UI 渲染

  • TurboModule:按需加载原生模块

  • Codegen:类型安全的原生接口


二、核心架构模块详解

1️⃣ JS 层(应用层)

技术组成
模块 说明
React UI 构建
Navigation 路由(React Navigation / RNN)
State Redux / Zustand / MobX
API Axios / React Query
i18n 国际化
Theme 主题 & 响应式

建议

  • 页面只负责 UI

  • 业务逻辑下沉到 services / domain

  • 避免 Bridge 频繁调用


2️⃣ JS Engine(执行环境)

引擎 特点
Hermes ⭐推荐,启动快、内存小
JSC 老架构默认
V8 Android 可替换

✅ 生产环境 强制开启 Hermes


3️⃣ Bridge(旧架构通信)

异步、JSON 序列化、性能瓶颈

复制代码
JS → JSON → Bridge → Native
Native → JSON → Bridge → JS

❌ 问题:

  • 高频调用卡顿

  • 动画不跟手

  • 调试困难


4️⃣ JSI(新架构核心)

JS 直接持有 C++ 对象指针

复制代码
JS ──► Native (同步)

✅ 优势:

  • 无序列化

  • 同步调用

  • 高性能

  • 更好的多线程支持


5️⃣ Fabric(UI 渲染层)

项目 旧架构 Fabric
渲染 异步 同步
优先级 支持
动画 延迟 流畅

✅ 解决:

  • 白屏

  • 列表卡顿

  • 手势冲突


6️⃣ TurboModule(原生模块)

✅ 特点:

  • 按需加载

  • 强类型(TypeScript)

  • 更快初始化

    export interface Spec extends TurboModule {
    getDeviceId(): string;
    }


三、典型 RN 项目目录架构(推荐)

复制代码
app/
├── src/
│   ├── app/              # 应用入口
│   ├── screens/          # 页面
│   ├── components/       # 通用组件
│   ├── modules/          # 业务模块
│   ├── services/         # API & 业务
│   ├── store/            # 状态管理
│   ├── hooks/
│   ├── utils/
│   └── native/           # 原生桥接封装
├── ios/
├── android/
├── common/               # 双端共享代码
└── packages/             # Monorepo 子包

四、原生与 JS 通信方式对比

场景 方案
UI 渲染 Fabric
业务调用原生 TurboModule
事件通知 EventEmitter
高频数据 JSI 直接调用
离线缓存 SQLite / MMKV
推送 原生实现

五、性能架构设计要点

✅ 必须做的

  • 启用 Hermes

  • 启用 New Architecture

  • 使用 FlatList/ FlashList

  • 图片缓存(react-native-fast-image)

  • 避免 Bridge 高频调用

❌ 常见错误

  • JS 中做重计算

  • 页面嵌套过深

  • 同步阻塞任务

  • 滥用 useEffect


六、混合架构(Hybrid)

常见模式

复制代码
App
├── Native 壳
├── RN 业务模块
└── WebView 活动页

✅ 适用:

  • 已有原生 App

  • 热更新需求

  • 高频运营页


七、工程化与发布架构

领域 工具
构建 Metro
包管理 Yarn / pnpm
Monorepo Nx / Turborepo
CI/CD GitHub Actions
热更新 CodePush
监控 Sentry / Firebase

八、RN 架构选型建议

场景 建议
创业 MVP Expo + RN
中大型 App Bare RN + New Arch
超高性能 RN + Native 混合
金融/直播 原生主导

九、总结一句话

React Native 不是"写一次跑两端",而是"用 JS 控制业务,用原生控制体验"。

相关推荐
繁荣的柚子2 小时前
配置环境变量
软件工程
老王以为2 小时前
Fiber 节点 —— 一个数据结构如何承载整个 React 运行时
前端·react native·react.js
唐诺3 小时前
Objective-C 之 KVC 详解
ios·objective-c·kvc
00后程序员张4 小时前
iOS 打包方式汇总 从 Xcode Archive 到轻量级工具链的 IPA 构建
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
唐诺20 小时前
Objective-C 之 Foundation框架 详解
ios·objective-c·foundation
光影少年1 天前
react navite JSBridge 通信机制、异步通信特点
react native·react.js·掘金·金石计划
清风共青峰1 天前
AiBall 新功能:Codex 代理池控制面板,一键连接、无感切
软件工程
清风共青峰1 天前
桌面多了一个小球,电脑好像变顺手了
软件工程
郝学胜-神的一滴2 天前
CMake 038:OBJECT目标复用编译+Linux动态库版本自动化管理
linux·c++·程序人生·软件工程·软件构建·cmake·工程配置