Web 平台開發日記 - 第一章:從零開始的架構設計與技術選型
系列導讀: 本系列記錄了個人實戰項目的完整開發過程。通過結合自己掌握的技術棧,完整記錄從設計、架構、實現到部署的全過程,並總結開發中的經驗教訓。
項目性質: 個人開源學習項目
當前階段: 基礎框架與基礎設施(已完成)
一、項目背景
1.1 項目初心
這是個人實戰項目,主要目的是:
- 🎯 技術實踐 - 結合自己掌握的技術棧(Go + Vue 3)進行深度實踐
- 📝 記錄過程 - 完整記錄從設計、架構、實現到部署的全過程
- 🧪 測試框架 - 在一個完整的項目中驗證各種技術選擇的可行性
- 📚 學習總結 - 通過博客系列分享開發過程中的經驗教訓
1.2 項目定位
項目名稱: Enterprise Web Platform (EWP)\
項目性質: 開源、學習、實戰\
技術棧: Go 1.22 + Vue 3 + MySQL 8.4 + Redis 7\
目標: 構建一個具有企業級特性的完整 Web 應用平台
這不是為了商業用途,而是為了在實際開發中深入理解:
- 如何從零開始設計應用架構
- 如何做出合理的技術選型決策
- 如何搭建完整的開發、部署、監控體系
- 如何編寫可維護、可擴展的代碼
1.3 核心特點
| 特點 | 説明 |
|---|---|
| 開源免費 | 100% MIT 許可證,無商業限制 |
| 技術棧現代 | 採用最新的主流開源技術 |
| 完整度高 | 包含前端、後端、基礎設施、監控 |
| 易於學習 | 清晰的代碼結構、詳細的文檔 |
| 可部署性強 | 支持本地開發、單機部署、容器化部署 |
二、技術選型
技術選型是項目成功的基礎。我們的選型過程遵循了"需求驅動"的原則,即:先明確需求,再根據需求評估候選方案。
2.1 選型評估框架
我們建立了一個多維度的評估框架:
選型評估 = 需求滿足度 + 生態完善度 + 學習成本 + 長期維護性 + 許可證合規性
2.2 後端技術選型
📋 核心需求
- 支持 RESTful API 快速開發
- ORM 能力完善(自動遷移、關聯查詢等)
- 內置中間件系統(認證、CORS、日誌等)
- 熱部署支持(開發階段)
- 性能優異
🎯 候選方案評估
方案 A: 使用現成的完整項目模板
優點: ✅ 功能完善,開發快速
優點: ✅ 文檔豐富,社區活躍
缺點: ❌ 通常包含授權限制或商業條款
缺點: ❌ 定製空間有限,架構固定
缺點: ❌ 難以理解底層設計細節
結論: 對於學習和深度定製不合適 ✗
方案 B: Go Web 框架選型
我重點對比了三個主流的 Go Web 框架:
| 指標 | Gin | Fiber | Echo |
|---|---|---|---|
| 性能 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| 學習曲線 | 簡單 | 中等 | 中等 |
| 中間件系統 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| 社區規模 | 最大 | 中等 | 較小 |
| 生產應用 | 廣泛 | 快速增長 | 適中 |
| 文檔質量 | 優秀 | 優秀 | 良好 |
| 開發速度 | 快 | 極快 | 快 |
Gin 框架深入分析 ✅
// 簡潔的路由定義
func main() {
router := gin.Default()
// 基本路由
router.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{"message": "pong"})
})
// 路由組
v1 := router.Group("/api/v1")
{
v1.POST("/users", createUser)
v1.GET("/users/:id", getUser)
}
router.Run(":8080")
}
選擇 Gin 的原因:
- 🏆 Go 社區中最流行和成熟的框架
- ⚡ 性能在三者之間均衡(足夠快,但不過度優化)
- 📚 文檔最完善,教程和案例最多
- 🔧 中間件系統完整,易於擴展
- 🏢 企業級應用最廣泛(字節跳動、小米等都在用)
- 🎯 學習成本最低,對初學者友好
- 📦 與 GORM、Viper 等庫的集成最成熟
Fiber vs Gin:
Fiber 的優勢:
✅ 性能最高(基於 Fasthttp,併發能力最強)
✅ Express.js 風格,對 Node.js 開發者友好
✅ 開發速度快,API 簡潔直觀
Fiber 的劣勢:
❌ 社區相對較小
❌ 文檔和教程相對較少
❌ 與其他 Go 庫的生態集成度不如 Gin
❌ 在中等併發下,性能優勢不明顯
Echo vs Gin:
Echo 的優勢:
✅ 高性能(與 Gin 相當)
✅ 中間件系統完整
✅ 數據綁定和驗證功能強大
Echo 的劣勢:
❌ 社區規模和熱度不如 Gin
❌ 文檔質量一般
❌ 在國內使用較少,遇到問題難以找到解決方案
最終結論:
對於這個項目,選擇 Gin 是最優選擇,因為:
1. 最成熟穩定,適合學習和參考
2. 社區最活躍,問題最容易解決
3. 文檔最完善,教程資源最豐富
4. 與 Go 生態庫的集成最好
5. 對後期維護和擴展最有利
方案 C: 完全自定義框架
優點: ✅ 最大靈活性
缺點: ❌ 開發週期長(6+ 個月)
缺點: ❌ 重複發明輪子
缺點: ❌ 維護成本高,容易埋坑
結論: 對於學習項目不經濟 ✗
最終技術棧選擇 ✅
後端框架: Gin (MIT)
✅ Go 生態中最成熟的 Web 框架
✅ 完整的中間件支持
✅ 高性能且性能均衡
✅ 活躍的社區和豐富的教程
ORM: GORM v2 (MIT)
✅ Go 最完善的 ORM 框架
✅ 自動遷移功能(省去手寫 SQL)
✅ 強大的關聯查詢能力
✅ 企業級生產應用廣泛使用
認證: golang-jwt/jwt (MIT)
✅ JWT 標準實現
✅ 支持多種算法
✅ 生態成熟
授權: Casbin (Apache 2.0 無商業限制)
✅ 支持 RBAC、ABAC 等多種模型
✅ 靈活的權限定義
✅ 高效的策略匹配
📊 後端選型總結
| 組件 | 選擇 | 版本 | 許可證 | 理由 |
|---|---|---|---|---|
| 框架 | Gin | 1.x+ | MIT | 最成熟的 Go Web 框架,極簡設計,高性能 |
| ORM | GORM | v2 | MIT | 功能完善,自動遷移,關聯支持完整 |
| 認證 | JWT-Go | 3.x+ | MIT | JWT 標準實現,配合自定義中間件 |
| 授權 | Casbin | 2.x+ | Apache 2.0 | 靈活的權限模型,支持 RBAC、ABAC |
| 日誌 | Zap | 1.x+ | MIT | 高性能結構化日誌,企業級使用廣泛 |
| 配置 | Viper | 1.x+ | MIT | 支持熱重載,多源配置,靈活強大 |
| 驗證 | Validator | 10.x+ | MIT | 強大的結構體驗證庫,標籤式定義 |
| 緩存 | Redis | 7+ | BSD | 高性能內存緩存,會話存儲 |
2.3 前端技術選型
📋 核心需求
- 現代化的開發體驗(熱更新、TypeScript 支持)
- 企業級 UI 組件庫
- 權限管理和動態菜單
- 完善的管理後台模板
- 零許可證限制
🎯 候選方案評估
方案 A: Vue Pure Admin(最終選擇)✅
Vue Pure Admin 是一款基於 Vue 3、Vite、Element-Plus、TypeScript 等最新技術棧開發的中後台管理系統模板。
技術棧:
- ✅ Vue 3(核心框架)- 最新的 Vue 版本,Composition API
- ✅ Element Plus(UI 庫)- 國內最流行的企業級組件庫
- ✅ Vite(構建工具)- 極速開發體驗和優化的生產構建
- ✅ Pinia(狀態管理)- Vue 3 官方推薦的狀態管理庫
- ✅ Vue Router(路由)- 支持動態路由、權限控制
- ✅ TypeScript - 完整的類型支持,提高代碼質量
- ✅ Tailwind CSS - 實用優先的 CSS 框架
為什麼選它:
- ✅ 開箱即用 - 包含登錄、權限、菜單、表格等完整的後台管理功能
- ✅ 生產級代碼 - 遵循企業級最佳實踐,代碼規範清晰
- ✅ 快速上手 - 作為後端開發者,可以直接使用框架邊開發邊學習前端
- ✅ 完整示例 - 提供了豐富的業務組件和使用案例
- ✅ 活躍維護 - 社區活躍,持續更新和改進
- ✅ 靈活定製 - 架構清晰,易於擴展和定製
- ✅ 適合團隊協作 - 代碼結構規範,新開發者易上手
結論: 對於以後端開發為主、希望快速搭建管理後台的項目,Vue Pure Admin 是最佳選擇 ✓
📊 其他前端框架對比
| 方案 | 技術棧 | 學習成本 | 上手速度 | 定製靈活性 | 適用場景 |
|---|---|---|---|---|---|
| Vue Pure Admin | Vue3 + Element Plus + Vite | 低 | ⭐⭐⭐⭐⭐ | 高 | 後端為主、快速交付 |
| 從零搭建 Vue 3 | 基礎庫手工組裝 | 高 | ⭐⭐ | 極高 | 前端專家、深度學習 |
| Ant Design Vue | Ant Design + Vue 3 | 中 | ⭐⭐⭐ | 中 | 國際化項目、複雜 UI |
| Vben Admin | Ant Design + Vue 3 | 中 | ⭐⭐⭐ | 高 | 大型企業應用 |
關鍵區別:
-
Vue Pure Admin vs 從零搭建
- Vue Pure Admin: 生產級代碼,包含完整功能,適合快速交付
- 從零搭建: 學習價值最高,但開發週期長
-
Vue Pure Admin vs Ant Design Vue
- Vue Pure Admin 使用 Element Plus(國內常用)
- Ant Design Vue 使用 Ant Design(國際化風格)
- Vue Pure Admin 更輕量,Ant Design 功能更全面
-
Vue Pure Admin vs Vben Admin
- Vue Pure Admin: 相對輕量級,易上手
- Vben Admin: 功能更強大,但複雜度更高
📊 前端選型總結
| 組件 | 選擇 | 版本 | 許可證 | 理由 |
|---|---|---|---|---|
| 框架 | Vue | 3.4+ | MIT | 最新、易學習、生態成熟 |
| UI 庫 | Element Plus | 2.5+ | MIT | 企業級組件庫,中文文檔完善 |
| 構建工具 | Vite | 5.x+ | MIT | 極速開發、優化的生產構建 |
| 狀態管理 | Pinia | 2.1+ | MIT | Vue 3 官方推薦 |
| 路由 | Vue Router | 4.x+ | MIT | 支持動態路由、權限控制 |
| HTTP 客户端 | Axios | 1.6+ | MIT | 功能完善、請求攔截器 |
| 管理模板 | Vue Pure Admin | 最新 | MIT | 開箱即用、生產級代碼 |
| CSS 框架 | Tailwind CSS | 最新 | MIT | 實用優先、響應式設計 |
2.4 基礎設施選型
數據庫
MySQL 8.4(升級從 5.7)
原本選擇 MySQL 5.7,但開發環境為 Apple Silicon (ARM64)
❌ MySQL 5.7 不支持 ARM64 架構
✅ 升級到 MySQL 8.4 完全支持 ARM64
✅ 8.4 向後兼容 5.7,無遷移成本
✅ 更好的性能和安全特性
Redis 7
✅ 支持 ARM64
✅ 性能改進(Stream 增強等)
✅ 廣泛使用的緩存和會話存儲
容器化與編排
Podman(替代 Docker)
為什麼選擇 Podman?
安全優勢:
- ✅ 無需 root 權限(Rootless 容器)- 權限提升風險更低
- ✅ 無守護進程 - 沒有以 root 身份運行的後台服務
- ✅ 進程隔離模型 - 單一容器出現問題不影響其他容器
運維優勢:
- ✅ 資源消耗少 - 無後台守護進程,內存佔用更低
- ✅ 輕量級 - 適合開發機和邊緣部署
- ✅ Kubernetes 原生支持 - Pod 概念直接映射到 K8s
- ✅ 100% 開源 - RedHat 維護,無商業許可限制
開發體驗:
- ✅ 與 Docker API 完全兼容 - 所有 Docker 命令無需改動
- ✅ 支持 Podman Compose - 等同於 Docker Compose
- ✅ 更清晰的進程模型 - 便於理解容器生命週期
Docker 作為備選方案:
- ⚠️ 需要 root 權限或 Docker 守護進程 - 提升權限風險
- ⚠️ 後台守護進程 - 即使不使用也消耗系統資源
- ⚠️ Docker Desktop 商業許可 - macOS/Windows 有企業許可考慮
- ✅ 但仍完全支持(
make docker-up)
實際對比:
| 對比項 | Podman | Docker |
|---|---|---|
| Root 權限 | ❌ 不需要 | ⚠️ 需要 |
| 後台守護進程 | ❌ 無 | ✅ 有 |
| 內存佔用 | ✅ \~50MB | ⚠️ \~200MB+ |
| API 兼容性 | ✅ 100% | ✅ 原生 |
| Pod 支持 | ✅ 原生 | ❌ 需擴展 |
| 開源 | ✅ 完全 | ✅ 完全 |
| 商業許可 | ✅ 無 | ⚠️ 有考慮 |
安裝:
# macOS
brew install podman podman-compose
podman machine init
podman machine start
# Linux (Ubuntu/Debian)
sudo apt-get install podman podman-compose
# 驗證安裝
podman --version
podman ps
遷移到 Podman 很簡單:
# 如果之前使用 Docker
make docker-down # 停止 Docker 容器
# 改用 Podman
make podman-up # 啓動 Podman 容器
# 兩者的命令完全相同,配置文件也相同
監控與可觀測性
Prometheus + Grafana
✅ 開源免費
✅ 業界標準的監控方案
✅ 完全自託管(數據不離開客户基礎設施)
✅ 支持本地部署
其他考慮
❌ SaaS 方案(Datadog、New Relic):數據隱私和成本問題
❌ 雲原生方案(雲平台內置監控):廠商鎖定風險
API 網關
Nginx
✅ 業界標準,久經考驗
✅ 開源免費
✅ 功能完善(SSL、限流、緩存等)
✅ 高性能低資源消耗
其他考慮
- Kong(更功能豐富但複雜度高)
- Traefik(Kubernetes 原生但不適合初期)
2.5 許可證合規性保證
這是選型中最關鍵的一環。選型的許可證檢查清單:
依賴檢查清單
├── 後端依賴
│ ├── MIT: Gin, GORM, Zap, Viper, jwt-go, Validator ✅
│ ├── Apache 2.0 (無商業限制): Casbin, Prometheus ✅
│ ├── BSD: Redis ✅
│ └── ❌ GPL: 零個
├── 前端依賴
│ ├── MIT: Vue, Vue Router, Pinia, Element Plus, Vite, Axios ✅
│ └── ❌ GPL: 零個
└── 基礎設施
├── BSD: Nginx, Redis ✅
├── Apache 2.0: Docker, Prometheus ✅
└── ❌ GPL: 零個
結論: ✅ 100% 許可證合規,零商業限制
三、項目架構:整體設計與模塊介紹
3.1 整體架構圖
┌─────────────────────────────────────────────────────────────┐
│ 客户端瀏覽器 │
│ (Vue 3 + Element Plus SPA) │
└────────────────────┬────────────────────────────────────────┘
│ HTTPS
▼
┌─────────────────────────────────────────────────────────────┐
│ Nginx API Gateway │
│ • SSL/TLS 終止 │
│ • 靜態資源服務 (前端 SPA) │
│ • API 請求代理 │
│ • 速率限制和安全頭 │
└────────────────────┬────────────────────────────────────────┘
│ HTTP
▼
┌─────────────────────────────────────────────────────────────┐
│ Gin Web 框架 (Go 後端) │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ 中間件層 │ │
│ │ • CORS 處理 │ │
│ │ • JWT 認證 │ │
│ │ • Casbin RBAC 授權 │ │
│ │ • 結構化日誌 (Zap) │ │
│ │ • Prometheus 指標收集 │ │
│ └──────────────────────────────────────────────────────┘ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ 路由處理層 (api/v1/*) │ │
│ │ • 認證管理 (/auth/login, /auth/logout) │ │
│ │ • 用户管理 (/users/*, /roles/*) │ │
│ │ • 文件管理 (/files/upload, /files/download) │ │
│ │ • 健康檢查 (/health, /ready, /metrics) │ │
│ └──────────────────────────────────────────────────────┘ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ 業務邏輯層 (service/*) │ │
│ │ • 用户服務 │ │
│ │ • 權限服務 │ │
│ │ • 文件服務 │ │
│ └──────────────────────────────────────────────────────┘ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ 數據模型層 (model/*) │ │
│ │ • User (用户) │ │
│ │ • Role (角色) │ │
│ │ • Permission (權限) │ │
│ │ • BaseModel (創建時間、更新時間等) │ │
│ └──────────────────────────────────────────────────────┘ │
└────────────┬────────────────────────────────┬────────────────┘
│ │
▼ 讀寫 ▼ 緩存
┌─────────────────────┐ ┌─────────────────────┐
│ MySQL 8.4 │ │ Redis 7 │
│ │ │ │
│ • 業務數據存儲 │ │ • 會話存儲 │
│ • 用户認證信息 │ │ • 緩存數據 │
│ • 權限關係 │ │ • 併發控制 │
└─────────────────────┘ └─────────────────────┘
3.2 分層架構詳解
我們採用了經典的三層架構 + 中間件 設計:
第一層:路由與中間件層 (router/ 和 middleware/)
職責:
- 接收 HTTP 請求
- 執行跨越多個處理器的操作(認證、日誌、限流等)
- 路由分發
關鍵文件:
server/
├── router/
│ └── router.go # 路由註冊
├── middleware/
│ ├── cors.go # 跨域資源共享
│ ├── jwt.go # JWT 認證 (待實現)
│ ├── rbac.go # Casbin 授權 (待實現)
│ ├── logger.go # 結構化日誌 (待實現)
│ └── metrics.go # Prometheus 指標 (待實現)
核心職責是接收 HTTP 請求、應用中間件(CORS、認證、日誌等)、分發到對應的處理器。
第二層:業務邏輯層 (service/)
職責:
- 實現具體的業務邏輯
- 與數據模型交互
- 獨立於 HTTP 框架(可複用於 gRPC、CLI 等)
關鍵文件:
server/service/
├── user_service.go # 用户相關業務邏輯
├── auth_service.go # 認證相關業務邏輯
├── role_service.go # 角色權限業務邏輯
└── file_service.go # 文件上傳下載業務邏輯
業務邏輯層獨立於 HTTP 框架,包含實際的業務規則:數據驗證、密碼加密、緩存更新等。
第三層:數據模型層 (model/)
職責:
- 定義數據結構
- 與數據庫表映射
- 包含 GORM 標籤和驗證規則
關鍵文件:
server/model/
├── base.go # 基礎模型(id、創建時間等)
├── user.go # 用户模型
├── role.go # 角色模型
├── permission.go # 權限模型
└── file.go # 文件模型
數據模型層使用 GORM 標籤定義數據庫表結構、關聯關係和字段驗證規則。
3.3 關鍵模塊深入
📌 認證模塊 (JWT)
流程:
- 用户登錄時,後端驗證用户名/密碼
- 驗證成功後,生成包含用户 ID 和權限的 JWT token
- 前端將 token 存儲在 localStorage
- 後續請求在 Authorization Header 中攜帶 token
- 中間件驗證 token 的有效性和簽名
JWT 實現包括 token 生成(包含用户 ID、用户名、角色)和驗證(驗證簽名和過期時間)。
📌 授權模塊 (Casbin RBAC)
RBAC 模型定義 (config/rbac_model.conf):
[request_definition]
r = sub, obj, act
[policy_definition]
p = sub, obj, act
[role_definition]
g = _, _
[policy_effect]
e = some(where (p.eft == allow))
[matchers]
m = g(r.sub, p.sub) && r.obj == p.obj && r.act == p.act
權限規則定義簡潔(例如:p, admin, /users/*, *),中間件通過 Casbin 驗證用户是否有權訪問特定資源。
📌 結構化日誌模塊 (Zap)
目的:
- 便於日誌聚合和分析
- 包含請求 ID 便於追蹤
- 性能高效
結構化日誌以 JSON 格式輸出,包含日誌級別、時間戳、調用位置和自定義字段,便於日誌聚合和分析。
3.4 前端架構
前端採用 Vue Pure Admin 框架,這是一款基於 Vue 3 + Element Plus + Vite 的企業級管理後台模板。
核心特點:
- 開箱即用 - 包含完整的登錄、權限管理、菜單系統、表格等功能
- 現代化技術棧 - Vue 3 Composition API、TypeScript、Vite 構建
- 企業級規範 - 代碼結構清晰,遵循最佳實踐
- 易於上手 - 作為後端開發者,可以直接修改和擴展
- 生產級質量 - 經過驗證的架構和最佳實踐
項目結構 - Vue Pure Admin 標準結構:
web/
├── src/
│ ├── api/ # API 服務層 (Axios 請求)
│ ├── views/ # 頁面組件 (登錄、儀表板、管理等)
│ ├── components/ # 可複用的業務組件
│ ├── layout/ # 佈局組件 (菜單、頂欄等)
│ ├── router/ # 路由配置 + 權限控制
│ ├── store/ # Pinia 狀態管理
│ ├── utils/ # 工具函數 (HTTP、存儲等)
│ ├── types/ # TypeScript 類型定義
│ ├── App.vue # 根組件
│ └── main.ts # 應用入口
├── index.html # HTML 模板
├── vite.config.ts # Vite 配置
├── tsconfig.json # TypeScript 配置
└── package.json # 依賴管理
關鍵功能:
- ✅ 權限控制 - 基於角色的訪問控制 (RBAC)
- ✅ 動態菜單 - 支持權限級別的菜單顯示/隱藏
- ✅ 主題切換 - 內置亮色和暗黑主題
- ✅ 響應式設計 - 支持 PC、平板、手機多種設備
- ✅ 完整的管理功能 - 用户管理、角色管理、權限管理等
四、項目現狀
4.1 開發環境部署
經過第一階段的開發,我們成功搭建了完整的開發環境:
📦 基礎設施啓動狀態
$ make podman-up
✅ MySQL 8.4: localhost:3306 (container: ewp-mysql)
✅ Redis 7: localhost:6379 (container: ewp-redis)
✅ Prometheus: localhost:9090 (container: ewp-prometheus)
✅ Grafana: localhost:3000 (container: ewp-grafana)
提示: 所有容器都帶有 ewp- 前綴(Enterprise Web Platform 的縮寫),方便在本地開發環境中識別和管理。
🚀 後端服務
$ make run-backend
2025-12-24T17:26:19.324+0800 INFO Server starting...
2025-12-24T17:26:19.354+0800 INFO Database connected successfully
2025-12-24T17:26:19.360+0800 INFO Redis connected successfully
✅ Backend: http://localhost:8888
已實現的 API 端點:
| 端點 | 方法 | 説明 | 狀態 |
|---|---|---|---|
/api/ping |
GET | 健康檢查 | ✅ |
/api/health |
GET | 健康狀態 | ✅ |
/api/ready |
GET | 就緒狀態 | ⏳ |
/metrics |
GET | Prometheus 指標 | ⏳ |
🎨 前端應用
$ make run-frontend
VITE v7.1.12 ready in 1016 ms
➜ Local: http://localhost:8848/
4.2 項目效果圖
系統現已部署在本地
後端啓動日誌
前端啓動日誌
容器運行狀態
4.3 技術債清單
當前已完成的工作中,以下項目需要在後續階段完善:
- [ ] 單元測試(後端 service 層)
- [ ] 集成測試(API 端點)
- [ ] 前端組件測試
- [ ] 端到端測試 (E2E)
- [ ] 性能基準測試
- [ ] 安全審計
- [ ] 代碼覆蓋率報告
五、後續開發方向與計劃
5.1 開發計劃概覽
項目按照功能特性分為幾個主要階段進行開發:
Phase 1: 基礎框架與基礎設施 ✅ 已完成
├─ 項目腳手架和包結構
├─ 框架集成(Gin、GORM、Viper 等)
└─ 基礎設施搭建(MySQL、Redis、Prometheus、Grafana)
Phase 2: 認證與授權體系 📝 開發中
├─ JWT 認證完整實現
├─ Casbin RBAC 權限管理
├─ 用户和角色管理 API
└─ 前端權限控制和動態菜單
Phase 3: 核心功能模塊 📝 計劃中
├─ CRUD 基礎操作
├─ 文件上傳下載
├─ 數據導入導出
└─ 常用工具函數
Phase 4: 企業級特性 📝 計劃中
├─ 完整的監控體系
├─ 結構化日誌系統
├─ API 文檔(Swagger)
└─ 性能優化
Phase 5: 部署與運維 📝 計劃中
├─ 單機部署方案
├─ 多機部署方案
├─ 容器化部署
└─ 高可用配置
Phase 6: 測試與質量保證 📝 計劃中
├─ 單元測試
├─ 集成測試
├─ 性能測試
└─ 安全審計
Phase 7: 文檔與總結 📝 計劃中
├─ 完整的項目文檔
├─ 最佳實踐總結
└─ 技術經驗分享
這個計劃是靈活的,會根據實際情況進行調整。每個階段的重點是確保代碼質量和完整的學習記錄。
常見問題
Q: MySQL 連接失敗?
A: 確保容器已啓動 podman ps,檢查 config.yaml 中的 host 是否為 localhost
Q: 前端無法連接後端?
A: 檢查 vite.config.js 中的代理配置,或在瀏覽器 F12 檢查 Network 標籤
Q: Podman 命令找不到?
A: 使用 pipx install podman-compose 安裝(macOS 可用 Homebrew)