64 lines
4.1 KiB
Markdown
64 lines
4.1 KiB
Markdown
# 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 时再办)。
|