# 🌐 Web端組件架構設計指南 ## 📋 文檔概述 **文檔名稱**: Drama Ling Web端組件架構設計指南 **建立日期**: 2025-09-12 **目標受眾**: 前端工程師、UI/UX設計師、產品經理 **技術基礎**: HTML5 + CSS3 + Modern JavaScript ## 🎯 設計原則 ### 🖥️ **桌面優先設計** - **多任務並行**: 支援同時開啟多個學習模組 - **大螢幕利用**: 充分使用桌面螢幕空間 - **快捷鍵支援**: 提供完整的鍵盤操作體驗 - **即時回饋**: 無需頁面刷新的流暢互動 ### 📐 **響應式策略** - **桌面優先**: 1200px+ 主要設計目標 - **平板適配**: 768px-1199px 簡化佈局 - **手機兼容**: 320px-767px 降級體驗 ## 🏗️ 組件架構層級 ### 1️⃣ **佈局組件 (Layout Components)** #### `WebLayout_Main` ```html
``` **設計特色**: - **固定頭部**: 命條、通知、用戶資訊常駐 - **可摺疊側邊欄**: 學習進度、快速導航 - **主內容區**: 彈性佈局,支援多視窗 #### `WebLayout_Modal` ```html
``` ### 2️⃣ **功能組件 (Feature Components)** #### `WebLearning_VocabPanel` ```html
``` **Web端特色**: - **四關同屏**: 同時顯示所有關卡狀態 - **即時切換**: 無縫在關卡間切換 - **詳細資訊**: 顯示更多學習數據 #### `WebLearning_DialoguePanel` ```html
``` ### 3️⃣ **交互組件 (Interactive Components)** #### `WebInput_Smart` ```html
Tab 接受建議 Ctrl+Enter 送出
``` **Web端增強**: - **快捷鍵提示**: 顯示可用快捷鍵 - **智能建議**: 即時顯示輸入建議 - **多行支援**: 支援長段對話輸入 ## 📊 組件狀態管理 ### 🔄 **狀態架構** ```javascript // Web端狀態管理 const WebStateManager = { // 學習狀態 learning: { currentStage: 'vocab-level1', progress: { level1: 80, level2: 60, level3: 0 }, activeWindows: ['vocab', 'dialogue'] }, // UI狀態 ui: { sidebarCollapsed: false, activeModals: [], shortcuts: true, theme: 'dark' }, // 用戶狀態 user: { lifePoints: 5, diamonds: 150, streak: 7 } } ``` ### 📡 **數據流向** ```mermaid flowchart TD A[用戶操作] --> B[組件事件] B --> C[狀態管理器] C --> D[API調用] D --> E[後端回應] E --> C C --> F[組件重渲染] F --> G[UI更新] ``` ## 🎨 視覺設計標準 ### 🖼️ **佈局網格** ```css .web-container { display: grid; grid-template-columns: 280px 1fr; /* 側邊欄 + 主內容 */ grid-template-rows: 80px 1fr; /* 頭部 + 內容區 */ min-height: 100vh; } .web-content-area { display: grid; grid-template-columns: repeat(auto-fit, minmax(400px, 1fr)); gap: var(--space-6); padding: var(--space-6); } ``` ### 🎯 **互動狀態** ```css /* Web端特有的懸停效果 */ .web-interactive:hover { transform: translateY(-2px); box-shadow: 0 8px 25px rgba(0, 229, 204, 0.3); transition: all 0.3s ease; } /* 聚焦狀態 */ .web-focusable:focus { outline: 2px solid var(--primary-teal); outline-offset: 2px; } ``` ## ⌨️ 快捷鍵系統 ### 🔤 **全域快捷鍵** ```javascript const WebShortcuts = { 'Ctrl+1': () => navigateToStage('vocab-level1'), 'Ctrl+2': () => navigateToStage('vocab-level2'), 'Ctrl+3': () => navigateToStage('dialogue'), 'Space': () => playAudio(), 'Ctrl+Enter': () => submitAnswer(), 'Escape': () => closeModal(), 'Ctrl+/': () => showShortcutHelp() } ``` ### 📝 **上下文快捷鍵** ```javascript // 詞彙學習專用 const VocabShortcuts = { '←/→': () => switchWord(), 'R': () => repeatAudio(), '1-4': () => selectAnswer(), 'N': () => nextQuestion() } // 對話練習專用 const DialogueShortcuts = { 'Ctrl+H': () => showHint(), 'Ctrl+T': () => translateMessage(), 'Ctrl+R': () => requestAssistance() } ``` ## 🔧 開發規範 ### 📦 **組件命名** ```javascript // 組件命名規範 WebComponent_功能名稱 // 主要組件 WebLayout_佈局類型 // 佈局組件 WebModal_彈窗類型 // 彈窗組件 WebInput_輸入類型 // 輸入組件 ``` ### 🗂️ **檔案結構** ``` src/web/ ├── components/ │ ├── layout/ # 佈局組件 │ │ ├── WebLayout_Main.js │ │ └── WebLayout_Modal.js │ ├── learning/ # 學習功能組件 │ │ ├── WebLearning_VocabPanel.js │ │ └── WebLearning_DialoguePanel.js │ └── common/ # 通用組件 │ ├── WebInput_Smart.js │ └── WebButton_Action.js ├── styles/ │ ├── web-layout.scss # 佈局樣式 │ ├── web-components.scss # 組件樣式 │ └── web-responsive.scss # 響應式樣式 └── utils/ ├── web-shortcuts.js # 快捷鍵管理 └── web-state.js # 狀態管理 ``` ## 🎮 實際範例:詞彙學習頁面 ### 📱 **Mobile版結構** ```html
當前: 詞彙1/5
單個詞彙展示
``` ### 💻 **Web版結構** ```html
5個詞彙預覽
進度: 3/5
當前詞彙詳細資訊
音頻控制面板
例句和語境
``` ## 📏 響應式設計指南 ### 🖥️ **桌面版** (1200px+) - **三欄佈局**: 側邊欄 + 主內容 + 工具欄 - **豐富互動**: 懸停效果、快捷鍵提示 - **詳細資訊**: 完整統計、進度可視化 ### 📱 **平板版** (768px-1199px) - **兩欄佈局**: 可摺疊側邊欄 + 主內容 - **簡化工具欄**: 整合到主內容區 - **觸控優化**: 增大點擊區域 ### 📱 **手機版** (320px-767px) - **單欄佈局**: 全螢幕主內容 - **底部導航**: Tab式導航 - **簡化功能**: 保留核心功能 --- **維護提醒**: 當添加新的Web端功能時,請確保更新此架構文檔並遵循既定的組件設計原則。 **最後更新**: 2025-09-12 **版本**: v1.0 **維護者**: Drama Ling Web開發團隊