[ PROMPT_NODE_23356 ]
decision-trees
[ SKILL_DOCUMENTATION ]
# 移动端决策树
> 框架选择、状态管理、存储策略以及基于上下文的决策。
> **这些是思考指南,而不是直接复制粘贴的答案。**
---
## 1. 框架选择
### 主决策树
你在构建什么?
│
├── 需要无需应用商店审核的 OTA 更新吗?
│ │
│ ├── 是 → React Native + Expo
│ │ ├── 开发使用 Expo Go
│ │ ├── 生产环境使用 EAS Update 进行 OTA
│ │ └── 最适合:快速迭代、Web 团队
│ │
│ └── 否 → 继续 ▼
│
├── 需要跨平台像素级完美的自定义 UI 吗?
│ │
│ ├── 是 → Flutter
│ │ ├── 自定义渲染引擎
│ │ ├── iOS + Android 使用统一 UI
│ │ └── 最适合:品牌化、视觉导向的应用
│ │
│ └── 否 → 继续 ▼
│
├── 是否有繁重的原生功能需求(ARKit, HealthKit, 特定传感器)?
│ │
│ ├── 仅 iOS → SwiftUI / UIKit
│ │ └── 最大化原生能力
│ │
│ ├── 仅 Android → Kotlin + Jetpack Compose
│ │ └── 最大化原生能力
│ │
│ └── 两者 → 考虑原生加共享逻辑
│ └── 使用 Kotlin Multiplatform 共享代码
│
├── 是否有现有的 Web 团队 + TypeScript 代码库?
│ │
│ └── 是 → React Native
│ ├── React 开发者的熟悉范式
│ ├── 与 Web 共享代码(有限)
│ └── 生态系统庞大
│
└── 是否有现有的 Flutter 团队的企业项目?
│
└── 是 → Flutter
└── 利用现有专业知识
### 框架对比
| 因素 | React Native | Flutter | 原生 (Swift/Kotlin) |
|--------|-------------|---------|----------------------|
| **OTA 更新** | ✅ Expo | ❌ 不支持 | ❌ 不支持 |
| **学习曲线** | 低 (React 开发者) | 中等 | 较高 |
| **性能** | 良好 | 优秀 | 最佳 |
| **UI 一致性** | 平台原生 | 完全一致 | 平台原生 |
| **包体积** | 中等 | 较大 | 最小 |
| **原生访问** | 通过桥接 | 通过通道 | 直接访问 |
| **热重载** | ✅ | ✅ | ✅ (Xcode 15+) |
### 何时选择原生
在以下情况选择原生:
├── 需要最高性能(游戏、3D)
├── 需要深度操作系统集成
├── 平台特定功能是核心需求
├── 团队拥有 n