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

4.1 KiB
Raw Blame History

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 时再办)。