系統架構 (System Architecture)
🏗️ 高層設計 (High-Level Design)
本系統採用 Jamstack 架構 (JavaScript, APIs, Markup),高度依賴客戶端渲染 (CSR) 與邊緣計算 (Edge Computing)。這種架構不僅成本極低 (幾近免費),還能提供極高的可用性。
核心組件流向
- 用戶 / PWA: 負責介面展示與用戶交互。
- Service Worker: 處理離線緩存與靜態資源管理。
- Web Worker (Heartbeat): 獨立計時器,確保後台持續運作。
- Cloudflare Worker (Edge): 作為後端代理與數據爬蟲。
- 數據源: 從 Hyperliquid 或 Coinglass 獲取原始數據。
🧩 組件詳解 (Components)
1. 前端 (The PWA)
- 技術棧: Vanilla ES6+ JavaScript, HTML5, CSS3。
- 角色: 負責 UI 渲染、狀態管理、用戶交互與離線能力。因為不使用 React/Vue 等框架,打包體積極小 (
<50KB),加載速度極快。 - 優點:
- 極致效能: 沒有 Virtual DOM 的開銷。
- 完全掌控: 直接操作 DOM,更適合這種高頻更新的儀表板。
2. 後台處理 (The Heartbeat)
- 位置:
/pwa/timer.worker.js - 角色: 這是本專案的關鍵技術突破。它確保應用程式在瀏覽器將分頁「凍結」時,仍能保持運作。
- 解決方案: Web Worker 運行在獨立線程,受限較少,能持續發送「心跳」喚醒主線程進行輪詢。
3. 邊緣層 (The Backend)
- 託管: Cloudflare Workers
- 角色: 作為代理 (Proxy) 與爬蟲。由於源數據可能沒有公開的 CORS API,Worker 負責在伺服器端請求數據、解析 HTML/JSON,並返回乾淨的 JSON 給前端。
🔄 數據流 (Data Flow)
- 啟動 (Boot):
app.js初始化,initUi()緩存 DOM 元素,Service Worker 註冊。 - 心跳 (Tick):
timer.worker.js每 10 秒發送一次信號。 - 獲取 (Fetch):
api.js向 Cloudflare Worker發出請求。 - 比對 (Delta):
ui.js比對新舊數據。- 若差異顯著,根據資產類型觸發不同的視聽覺警報。
- 渲染 (Render): 數據注入 DOM,圖表推入新數據點。