前端2026

演算法學習網站

互動式 LeetCode 演算法學習指南網頁應用,含 Markdown 渲染題目說明、閃卡學習模式,涵蓋 16 個演算法類別共 159 題。

演算法學習網站

專案概述

一個 React + TypeScript SPA,作為完整的演算法學習指南。涵蓋 16 個類別(陣列與雜湊、雙指標、滑動視窗、堆疊、二分搜尋、鏈結串列、樹、堆積、回溯、圖、動態規劃、貪心、區間、位元運算、設計、附錄)共 159 道 LeetCode 題目。題目內容從 Markdown 檔案即時載入。具備閃卡主動回想模式、Dashboard 進度總覽,以及以 Zustand 持久化的每題狀態追蹤(未開始 / 進行中 / 已掌握)。

技術挑戰與解決方案

動態 Markdown 內容載入

159 個題目頁面需要渲染含語法高亮程式碼區塊的 Markdown,但不能在構建時預先生成每個頁面。

解決方案:
將所有題目內容以原始 Markdown 檔案存放於 public/data/。執行時,React 元件獲取對應的 .md 檔案,透過 react-markdown 加 rehype-highlight 渲染。無需重新構建即可編輯內容。

無後端的進度持久化

用戶需要在 Session 之間保留題目狀態(未開始 / 進行中 / 已掌握),但不想要登入或伺服器。

解決方案:
使用帶有 localStorage 持久化中介件的 Zustand。題目狀態以 problemId → status 的平面 Map 儲存在 localStorage,App 載入時還原,用戶變更狀態時即時更新——零後端需求。

學習與心得

這個專案鞏固了我建立內容豐富 SPA 的技能,包括動態 Markdown 渲染。設計 Zustand store 管理進度追蹤讓我學會如何保持客戶端狀態精簡並持久化至 localStorage。建立閃卡模式讓我對間隔重複的 UX 設計有了深刻理解。

技術棧

前端框架

React 19TypeScriptVite 7TailwindCSS 4

狀態管理

Zustand

工具

react-markdownrehype-highlighthighlight.jsframer-motion

部署

DockerNginx