React Native简介 #
什么是React Native? #
React Native 是由 Facebook(现 Meta)在 2015 年开源的跨平台移动应用开发框架。它允许开发者使用 JavaScript 和 React 来构建真正的原生移动应用,实现"Learn Once, Write Anywhere"的理念。
与传统的混合应用(Hybrid App)不同,React Native 不会在 WebView 中渲染应用,而是将 React 组件映射到对应平台的原生 UI 组件。
React Native的历史 #
发展历程 #
| 时间 | 事件 |
|---|---|
| 2013年 | Facebook 内部开始开发 React Native |
| 2015年3月 | 在 F8 大会上正式开源发布 |
| 2016年 | 发布 0.20 版本,支持 Android |
| 2018年 | 发布 0.57 版本,引入新架构预览 |
| 2021年 | 发布 0.64 版本,支持 Hermes 引擎 |
| 2022年 | 发布 0.70 版本,默认启用新架构 |
| 2024年 | 发布 0.73 版本,持续优化性能 |
新架构 #
React Native 的新架构包含以下核心组件:
- Fabric:新的渲染系统,支持同步渲染和更好的交互
- TurboModules:延迟加载原生模块,提升启动性能
- Codegen:静态类型代码生成,提高类型安全性
- Hermes:优化的 JavaScript 引擎,减少内存使用
React Native vs 其他方案 #
与原生开发对比 #
| 特性 | React Native | 原生开发 |
|---|---|---|
| 开发语言 | JavaScript/TypeScript | Swift/Kotlin/Java |
| 开发效率 | 高(一套代码) | 低(需要两套代码) |
| 性能 | 接近原生 | 最佳 |
| 学习成本 | 低(熟悉 React 即可) | 高(需要学习平台特定语言) |
| 原生功能 | 需要桥接 | 直接访问 |
| 更新维护 | 方便 | 需要分别更新 |
与 Flutter 对比 #
| 特性 | React Native | Flutter |
|---|---|---|
| 开发语言 | JavaScript/TypeScript | Dart |
| 渲染方式 | 原生组件 | 自绘引擎 |
| 包体积 | 较小 | 较大 |
| 社区生态 | 成熟 | 快速发展 |
| 热重载 | 支持 | 支持 |
| 原生集成 | 更容易 | 需要更多工作 |
与混合应用对比 #
| 特性 | React Native | 混合应用 |
|---|---|---|
| 渲染方式 | 原生组件 | WebView |
| 性能 | 接近原生 | 较差 |
| 用户体验 | 原生体验 | 类似网页 |
| 开发复杂度 | 中等 | 简单 |
| 原生功能 | 需要桥接 | 需要插件 |
React Native的优势 #
1. 跨平台开发 #
一套代码库可以同时部署到 iOS 和 Android 平台,大幅减少开发时间和维护成本。
javascript
const App = () => {
return (
<View style={styles.container}>
<Text>Hello, React Native!</Text>
</View>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
},
});
2. 原生性能 #
React Native 将 React 组件映射到原生 UI 组件,确保应用具有原生级别的性能和用户体验。
3. 热重载 #
开发过程中修改代码可以即时看到效果,无需重新编译应用,大大提高开发效率。
4. 丰富的生态系统 #
- npm 包:可以使用大量 JavaScript 库
- 社区组件:丰富的第三方组件库
- 原生模块:可以集成任意原生功能
5. 动态更新 #
通过 CodePush 等工具,可以在不重新发布应用的情况下更新 JavaScript 代码。
应用场景 #
适合使用 React Native 的场景 #
- 内容展示类应用:新闻、博客、电商展示
- 社交类应用:聊天、动态分享
- 工具类应用:计算器、记事本
- 企业内部应用:OA、CRM、ERP
- MVP 产品:快速验证产品想法
不太适合的场景 #
- 高性能游戏:需要使用游戏引擎
- 复杂视频处理:需要大量原生计算
- AR/VR 应用:需要专门的 SDK
- 系统级应用:需要深度系统集成
知名应用案例 #
许多知名公司使用 React Native 开发他们的移动应用:
| 应用 | 公司 | 说明 |
|---|---|---|
| Meta | 部分功能使用 React Native | |
| Meta | 商家主页等功能 | |
| Meta | 部分功能集成 | |
| Discord | Discord | 聊天应用 |
| Shopify | Shopify | 电商应用 |
| Skype | Microsoft | 通讯应用 |
| Walmart | Walmart | 零售应用 |
| Bloomberg | Bloomberg | 金融应用 |
React Native 架构概览 #
基本架构 #
text
┌─────────────────────────────────────┐
│ JavaScript Code │
│ (React Components & Business) │
└─────────────────┬───────────────────┘
│
│ JS Bridge
▼
┌─────────────────────────────────────┐
│ Native Modules │
│ (iOS: Swift/ObjC, Android: Kt) │
└─────────────────┬───────────────────┘
│
▼
┌─────────────────────────────────────┐
│ Native UI │
│ (iOS: UIKit, Android: Views) │
└─────────────────────────────────────┘
渲染流程 #
- JavaScript 线程:执行 React 代码,计算虚拟 DOM
- Bridge:在 JS 和原生线程之间传递消息
- 主线程(原生):渲染原生 UI 组件
学习路线建议 #
初学者路线 #
text
JavaScript 基础 → React 基础 → React Native 基础组件
进阶路线 #
text
导航 → 状态管理 → 设备功能集成
高级路线 #
text
原生模块开发 → 性能优化 → 架构设计
总结 #
React Native 是一个强大且成熟的跨平台移动开发框架,它结合了 Web 开发的效率和原生应用的性能。对于大多数移动应用场景,React Native 都是一个优秀的选择。
接下来,让我们开始搭建开发环境,准备创建你的第一个 React Native 应用。
继续学习 环境搭建,配置你的开发环境。
最后更新:2026-03-28