dramaling-app/projects/native-html-migration.md

258 lines
8.0 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.

# Drama Ling 前端架構重構Vue → 原生HTML
**專案狀態**: ⏳ 規劃中
**建立日期**: 2025-09-10
**預估工期**: 3-4週
**優先級**: 🔥 緊急
## 🎯 專案目標
將 Drama Ling Web 應用從 Vue + Quasar 框架架構重構為原生 HTML + CSS + JavaScript 實現,以獲得:
1. **設計精確度 100%** - 完全按照設計規格實現,無框架樣式干擾
2. **Claude Code 最佳化** - AI 能精確理解和修改每行代碼
3. **性能提升** - 移除框架 overhead載入速度更快
4. **維護性提升** - 代碼直觀易懂,易於調試
## 📋 重構範圍
### 🎯 **目標架構**
```
apps/web-native/
├── index.html # 主入口頁面
├── pages/ # 頁面文件
│ ├── vocabulary/
│ │ ├── index.html # 詞彙學習首頁
│ │ ├── practice.html # 練習頁面
│ │ ├── review.html # 複習頁面
│ │ └── analytics.html # 分析儀表板
│ ├── dialogue/
│ │ ├── index.html # 對話練習首頁
│ │ └── practice.html # 對話練習頁面
│ ├── auth/
│ │ ├── login.html # 登入頁面
│ │ └── register.html # 註冊頁面
│ └── profile/
│ ├── index.html # 個人檔案
│ ├── progress.html # 學習進度
│ └── settings.html # 設定頁面
├── assets/
│ ├── css/
│ │ ├── main.css # 全局樣式
│ │ ├── components.css # 組件樣式
│ │ ├── layouts.css # 佈局樣式
│ │ └── themes.css # 主題樣式
│ ├── js/
│ │ ├── app.js # 主要應用邏輯
│ │ ├── api.js # API 通訊
│ │ ├── auth.js # 認證管理
│ │ ├── vocabulary.js # 詞彙功能
│ │ ├── dialogue.js # 對話功能
│ │ ├── utils.js # 工具函數
│ │ └── components/ # JavaScript 組件
│ │ ├── navbar.js # 導航欄
│ │ ├── sidebar.js # 側邊欄
│ │ ├── modal.js # 彈窗組件
│ │ └── charts.js # 圖表組件
│ └── media/
│ ├── icons/ # 圖標資源
│ ├── images/ # 圖片資源
│ └── audio/ # 音頻資源
├── data/
│ ├── vocabulary.json # 詞彙數據
│ ├── dialogues.json # 對話數據
│ └── mockData.js # 開發用模擬數據
└── docs/
├── README.md # 專案說明
├── ARCHITECTURE.md # 架構文檔
└── API_INTEGRATION.md # API 整合指南
```
## 🚀 執行階段
### **第一階段:基礎架構搭建 (週1)**
- [ ] 🏗️ 創建原生HTML專案目錄結構
- [ ] 🎨 建立核心CSS框架 (設計系統、響應式、主題)
- [ ] 📱 實現基礎佈局組件 (Header、Sidebar、Footer)
- [ ] 🔧 建立JavaScript模組化架構
- [ ] 📊 建立開發用模擬數據系統
### **第二階段:核心頁面實現 (週1)**
- [ ] 🏠 首頁實現
- [ ] 🔐 認證頁面 (登入/註冊/忘記密碼)
- [ ] 📚 詞彙學習主頁面
- [ ] 💬 對話練習主頁面
- [ ] 👤 個人檔案頁面
### **第三階段:功能頁面實現 (週1)**
- [ ] 📝 詞彙練習頁面 (選擇題、翻譯、同義詞)
- [ ] 🎯 詞彙複習頁面 (間隔複習系統)
- [ ] 📊 學習分析儀表板
- [ ] 💬 對話練習頁面
- [ ] ⚙️ 設定頁面
### **第四階段:整合與優化 (週1)**
- [ ] 🔌 API 整合 (真實數據對接)
- [ ] 🎮 進階功能實現 (書籤、多標籤、PWA)
- [ ] 🧪 測試與調試
- [ ] 📱 跨瀏覽器兼容性測試
- [ ] 🚀 部署配置
## 🛠️ 技術規格
### **前端技術棧**
- **HTML5** - 語義化標記
- **CSS3** - Grid + Flexbox 佈局CSS Variables
- **JavaScript ES6+** - 模組化開發,無框架依賴
- **Chart.js** - 數據視覺化 (保留)
- **Web APIs** - LocalStorage、SessionStorage、IndexedDB
### **開發工具**
- **Vite** - 開發服務器和建置工具 (保留)
- **PostCSS** - CSS 後處理 (可選)
- **ESLint** - JavaScript 代碼質量
- **Prettier** - 代碼格式化
### **設計系統**
```css
/* 色彩系統 */
:root {
--primary-teal: #00E5CC;
--secondary-purple: #6366F1;
--background-primary: #F7F9FC;
--background-dark: #1A1A1A;
--text-primary: #2C3E50;
--text-secondary: #64748B;
}
/* 間距系統 */
:root {
--space-1: 0.25rem; /* 4px */
--space-2: 0.5rem; /* 8px */
--space-3: 0.75rem; /* 12px */
--space-4: 1rem; /* 16px */
--space-6: 1.5rem; /* 24px */
--space-8: 2rem; /* 32px */
}
/* 字體系統 */
:root {
--text-xs: 0.75rem; /* 12px */
--text-sm: 0.875rem; /* 14px */
--text-base: 1rem; /* 16px */
--text-lg: 1.125rem; /* 18px */
--text-xl: 1.25rem; /* 20px */
--text-2xl: 1.5rem; /* 24px */
--text-3xl: 1.875rem; /* 30px */
--text-4xl: 2.25rem; /* 36px */
}
```
## 📊 數據管理策略
### **狀態管理模式**
```javascript
// 不使用Vue/Pinia改用簡潔的狀態管理
class AppState {
constructor() {
this.user = null;
this.vocabulary = [];
this.currentSession = null;
this.settings = {};
}
// 響應式更新UI
setState(newState) {
Object.assign(this, newState);
this.updateUI();
}
updateUI() {
// 觸發相關UI更新
document.dispatchEvent(new CustomEvent('stateChanged', {
detail: this
}));
}
}
```
### **API 通訊**
```javascript
// 簡潔的API客戶端不依賴axios
class ApiClient {
constructor(baseURL) {
this.baseURL = baseURL;
this.token = localStorage.getItem('authToken');
}
async request(endpoint, options = {}) {
const url = `${this.baseURL}${endpoint}`;
const config = {
headers: {
'Content-Type': 'application/json',
...(this.token && { Authorization: `Bearer ${this.token}` }),
...options.headers
},
...options
};
const response = await fetch(url, config);
return this.handleResponse(response);
}
}
```
## 🔄 遷移策略
### **漸進式遷移方法**
1. **並行開發** - 保留現有Vue版本並行開發原生版本
2. **頁面級遷移** - 逐頁替換,確保功能完整
3. **數據兼容** - 保持API接口不變確保數據一致
4. **用戶驗證** - A/B測試比較兩版本表現
### **風險控制**
- **功能回滾** - 保留Vue版本作為後備
- **數據備份** - 完整的數據遷移和備份策略
- **性能監控** - 建立性能基準線對比
- **用戶反饋** - 收集使用者體驗反饋
## 📈 預期效益
### **開發效率提升**
- Claude Code 理解度80% → 95%
- 調試效率提升50%
- 代碼維護成本降低40%
### **用戶體驗提升**
- 頁面載入速度2s → 0.8s (預估)
- 設計還原度85% → 100%
- 跨瀏覽器兼容性提升
### **技術債務清理**
- 移除不必要的框架依賴
- 清理過度抽象的代碼結構
- 建立更直觀的開發流程
## ⚠️ 風險評估
### **高風險項目**
- **開發時間** - 可能超出預期時間
- **功能遺漏** - Vue特定功能可能遺漏
- **團隊適應** - 需要團隊學習新的開發模式
### **緩解措施**
- **階段性交付** - 每週檢查點確保進度
- **功能檢查** - 詳細的功能對照表
- **文檔完善** - 完整的開發指南和最佳實踐
## 📋 下一步行動
1. **立即行動**:創建專案目錄結構
2. **本週目標**:完成第一階段基礎架構
3. **里程碑檢查**:每週進度評估和調整
---
**文檔更新**: 2025-09-10
**負責人**: Claude Code
**相關文檔**: [TASKS.md](../TASKS.md) | [架構設計](../docs/04_technical/ARCHITECTURE.md)