React Native 简介
React Native 的入门入口,指向现有 React Native 主笔记。
#type / concept
#status / growing
#tech / dev / frontend
React Native 简介
一句话定义
React Native 是一个使用 JavaScript/TypeScript 和 React 语法构建原生移动应用(iOS/Android)的框架,渲染的是真正的原生组件而非 WebView。
与 React Web 的区别
| 维度 | React Web | React Native |
|---|---|---|
| 渲染目标 | DOM 元素 (div, span) | 原生组件 (View, Text, Image) |
| 样式系统 | CSS | StyleSheet(JS 对象,类似 CSS 子集) |
| 导航 | React Router | React Navigation / 原生导航 |
| 运行环境 | 浏览器 | JavaScriptCore (iOS) / Hermes (Android) |
| 平台 API | Web API | 原生模块(相机、GPS、通知等) |
架构演进
旧架构(Bridge)
JS Thread <-> Bridge (JSON 序列化) <-> Native Thread
- JS 和原生通过异步 Bridge 通信,JSON 序列化/反序列化有性能瓶颈。
- 复杂动画和手势容易出现掉帧。
新架构(Fabric + JSI + TurboModules)
JS Thread <-> JSI (C++ 直接调用) <-> Fabric Renderer / TurboModules
- JSI(JavaScript Interface):C++ 层,允许 JS 直接持有原生对象引用,无需序列化。
- Fabric:新的渲染器,支持同步调用和并发渲染。
- TurboModules:按需加载的原生模块,替代旧的 Bridge Modules。
- Codegen:从 TypeScript/Flow 类型自动生成原生接口代码。
何时选择 React Native
- 团队已有 React/Web 经验,想复用技能栈。
- 需要 iOS + Android 双平台,但 UI 复杂度中等。
- 需要接近原生的性能和体验(非 WebView 套壳)。
- 项目需要热更新(如 CodePush)。
不适用的场景:对性能极度敏感的游戏、需要大量平台独有 API 的应用、UI 与平台规范高度统一的应用(可能直接用原生更快)。
Related notes
- React Native(主笔记)
- React MOC
- [[flutter|Flutter]]