- 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>
4.1 KiB
4.1 KiB
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)
选它的三个决定性理由(贴合用户约束):
- iOS 能云打包,不用 Mac —— 直接解决用户"没有 Mac 也想出 iOS 包"的痛点。
- 一套代码可顺手出微信小程序 —— 方便分享给家人/组员,免安装。
- 中文生态、文档、社区,Vue 上手快,图表库(uCharts/qiun-data-charts)成熟。
为什么不用 uni-app x:性能更强但插件生态不成熟,财务仪表盘类用经典版(Vue)更省事。
三、必须明确的现实约束(iOS 相关)
uni-app 云打包能省掉 Mac 电脑,但苹果的规矩绕不开:
- Apple 开发者账号 $99/年 —— 想装到 iPhone(哪怕自用)就得有,框架无法豁免。
- iOS 证书(
.p12+.mobileprovision)—— 没 Mac 也能生成,用在线工具(香蕉云编 / Appuploader)配合苹果开发者后台。 - 云打包在 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 时再办)。