Files
fire_goal/docs/02-技术选型.md
T
ilaandClaude Sonnet 4.6 d558da51a6 add project docs and research materials; update arch doc with WSL2 dev setup
- docs/: 6 development documents (PRD, tech selection, architecture, risks, roadmap, design workflow)
- research/: FIRE background materials, personal plan, Excel calculator
- 03-架构设计.md: add Section 8 documenting WSL2 → Windows browser dev environment (Vite host config, access URLs, mobile debugging tip)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 09:21:04 +08:00

64 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 02 · 技术选型
> 记录"如何把一套代码打包成 iOS + Android"的方案对比与最终决策。
## 一、候选方案对比
| 方案 | 原理 | iOS 免 Mac | 出微信小程序 | 自托管当网页 | 生态 |
|---|---|---|---|---|---|
| **uni-app** ✅选定 | Vue 语法,一套代码多端,HBuilderX 云打包 | ✅ 云打包 | ✅ | ✅(H5) | 中文/Vue |
| Capacitor + React | 网页 App 套原生壳 | ❌ 需 Mac | ❌ | ✅(更原生) | React/英文 |
| Flutter | Dart 编译双端原生 + Web | ❌ 需 Mac | ❌ | 一般 | Dart |
| React Native / Expo | JS 原生组件,Expo 可云构建 | ⚠️ 可云构建 | ❌ | ❌ | React |
## 二、最终决策
**前端框架:经典 uni-app(Vue 3)**
选它的三个决定性理由(贴合用户约束):
1. **iOS 能云打包,不用 Mac** —— 直接解决用户"没有 Mac 也想出 iOS 包"的痛点。
2. **一套代码可顺手出微信小程序** —— 方便分享给家人/组员,免安装。
3. **中文生态、文档、社区**,Vue 上手快,图表库(uCharts/qiun-data-charts)成熟。
> 为什么不用 uni-app x:性能更强但插件生态不成熟,财务仪表盘类用经典版(Vue)更省事。
## 三、必须明确的现实约束(iOS 相关)
uni-app 云打包能省掉 **Mac 电脑**,但**苹果的规矩绕不开**:
1. **Apple 开发者账号 $99/年** —— 想装到 iPhone(哪怕自用)就得有,框架无法豁免。
2. **iOS 证书**(`.p12` + `.mobileprovision`)—— 没 Mac 也能生成,用在线工具(香蕉云编 / Appuploader)配合苹果开发者后台。
3. **云打包在 HBuilderX 中操作** —— 需 DCloud 账号;此步由用户在 HBuilderX 点击完成,无法从命令行触发。
> 结论:uni-app 让"无 Mac 出 iOS 包"成立,但 $99/年苹果账号免不了。预算未定前,先用 H5/PWA + Android 自用。
## 四、技术栈清单
| 层 | 选型 |
|---|---|
| 用户端骨架 | **unibest**(uni-app + Vue3 + Vite + TS + UnoCSS + wot-ui,命令行开发不依赖 HBuilderX) |
| 用户端页面 | 普通 vue 页面(**不用 nvue**) |
| 图表 | qiun-data-charts(多端兼容封装) |
| 用户端目标 | H5(网页/PWA) + App(iOS/Android 云打包) +(可选/后置)微信小程序 |
| **后端** | **Go + Gin + GORM + SQLite(modernc 纯 Go 驱动)+ JWT**,Docker 部署于腾讯云 VPS;Nginx + certbot 提供 HTTPS |
| **管理后台** | **无构建**:Gin html/template + HTMX + Alpine.js + **Tabler**(Bootstrap5 后台皮肤) + Chart.js,由 Go 进程直接托管(`//go:embed`),并入 `server/` |
| 同步 | REST API(HTTPS) + 本地缓存(离线优先),简单时间戳同步策略 |
| 鉴权 | 单用户 JWT |
### 后端语言决策:Go vs Node
选 **Go(Gin + GORM + SQLite)**。理由:单二进制部署、内存占用小、Docker 镜像极小,**更适合常驻的小 VPS 自托管**;前后端经 REST/JSON 解耦,后端用什么语言对 unibest 前端无影响。
**管理端形态:API + Web 管理后台,且管理后台采用「无构建」方案** —— Gin html/template + HTMX + Alpine + **Tabler 后台模板**,由 Go 进程直接渲染托管。Tabler(MIT,Bootstrap5)自带登录/侧边栏/仪表盘/表格等现成页面,是 admin 端等价于 unibest 的"带基本模块骨架",且 CSS/JS 预编译、无需 build。放弃 Vue3+Element Plus(需独立 build/子项目) 与 gin-vue-admin/GoFrame(偏重),换来零 Node 工具链、单二进制、仓库更简单。
## 五、开发分工
- **AI(在 WSL)**:基于 unibest 搭用户端、写四大功能、H5 实时预览;写 Go(Gin) 后端 + 无构建管理后台(html/template+HTMX);给出 VPS 部署 + certbot HTTPS 步骤。
- **用户**:装 HBuilderX 导入项目 → 点云打包出 App;按教程办苹果账号/生成证书;在腾讯云 VPS 跑后端容器(如需小程序则办域名备案)。
## 六、用户需准备(按阶段)
- 现在:HBuilderX(免费)+ DCloud 账号。
- 出 Android:基本零成本。
- 出 iOS:Apple 开发者账号 $99/年(界面稳定、确定要上 iOS 时再办)。