主题
React Native
React Native 使用 React 和 JavaScript/TypeScript 构建 Android、iOS 等平台的原生应用。组件最终映射为平台原生视图,不依赖浏览器 DOM。
运行结构
React Native 应用可分为三个部分:
- JavaScript/TypeScript:组件、状态与业务逻辑;
- React Native 运行时:协调 React 更新、原生组件和平台 API;
- 原生工程:Android Gradle 工程与 iOS Xcode 工程,负责应用启动、权限、签名和打包。
业务代码通常可以跨平台复用,但交互规范、权限、系统能力和发布流程仍需分别适配 Android 与 iOS。
Expo
Expo 是围绕 React Native 提供的开发框架与服务集合,包含项目脚手架、路由、原生模块、开发客户端和构建发布服务。
| 方式 | 适用场景 | 限制 |
|---|---|---|
| Expo Go | 快速验证界面和 JavaScript 逻辑 | 只能使用客户端已内置的原生模块 |
| Development build | 日常项目开发 | 原生依赖或配置变化后需要重新构建 |
| 本地原生工程 | 调试或修改 Android、iOS 原生代码 | 需要 Android Studio 或 Xcode 环境 |
正式项目优先使用 development build。Expo Go 更适合作为无需编译的快速试用环境。
核心差异
| Web React | React Native |
|---|---|
div、button、input | View、Pressable、TextInput |
| CSS 文件与级联 | JavaScript 样式对象,无全局级联 |
| 浏览器 DOM API | React Native 或 Expo 提供的平台 API |
| URL 路由 | 原生导航栈、标签页与 Deep Link |
| 浏览器发布 | Android/iOS 构建、签名与商店发布 |
