

花半天把基礎架構想清楚,能讓後續幾個月的開發快非常多。這不是 over-engineering,這是止損。
先講結論
前端 MVP 設計不是要你什麼都做到最好,而是在寫第一行 code 之前,把「最少但必要」的架構決策定下來。你的目標是讓三個月後的自己(或接手的人)不會想把專案砍掉重練。
為什麼需要 MVP 設計?
你有沒有接過那種專案——一開始為了「快速上線」什麼架構都沒想,三個月後就變成義大利麵 code?改 A 壞 B,沒人敢碰,最後每個新功能都是在地雷區跳舞。
我自己踩過這個坑。有個專案一開始「先上再說」,元件隨便放、狀態到處飛、CSS 全域互打。兩個月後,加一個簡單的篩選功能要改七個檔案。那不是開發,那是拆彈。
五個你至少要想清楚的事
1. 元件結構:東西放哪裡
src/
├── components/ # 共用元件(Button, Modal, Input)
├── pages/ # 頁面級元件(對應路由)
├── layouts/ # 版面元件(Header, Sidebar)
├── hooks/ # 自訂 hooks
└── features/ # 依功能分模組(auth, cart, profile)
重點不是用哪種結構,而是團隊要有共識。最怕的是三個人各有一套分法,三個月後沒人找得到東西。
2. 狀態管理:狀態放哪裡
不需要一開始就上 Redux。先搞清楚三種狀態的邊界:
- 元件內部狀態:
useState搞定(modal 開關、input 值) - 跨元件共享狀態:Context 或輕量 store(登入資訊、主題設定)
- Server 狀態:用 React Query / SWR,不要自己手管 loading / error
什麼時候該升級?當你發現 props 要穿越三層以上元件才能到目的地的時候。
3. 路由設計:SPA 的骨架
MVP 階段至少想好巢狀路由結構、權限控制(哪些頁面要登入)、還有 404 頁面。這三個不先處理,後面改起來會非常痛苦。
4. CSS 架構:最容易失控的一塊
CSS Modules、Tailwind、styled-components——選哪個都可以,但整個專案只用一種。混用不同 CSS 方案就像同時用筷子和叉子吃飯,不是不行,只是何必。
5. API Layer:把 API 呼叫統一管理
src/api/
├── client.ts # axios/fetch 封裝(baseURL, token, error handling)
├── auth.ts # 認證相關
├── user.ts # 使用者相關
└── product.ts # 產品相關
哪天要換 API domain、加 header、改 error handling,改一個地方就好。散落在各元件裡的 fetch() 就是未來的技術債。
常見的 MVP 設計錯誤
這些我自己都犯過,特別列出來讓你少走彎路:
過度工程化:專案只有三個頁面就搞微前端、monorepo。拜託,你的使用者數量可能還沒有你的 config 檔多。
過早優化:一開始就瘋狂做 code splitting、lazy loading、memoization。先讓功能跑起來再說——你連使用者會不會用都不確定,優化什麼?
沒有統一規範:「反正先趕快做完再說」是技術債的起源。花 30 分鐘設定好 ESLint + Prettier,能省後面幾十小時的重構。
忽略錯誤處理:只想 happy path,沒考慮 API 失敗、斷網、使用者亂輸入。MVP 不代表不處理 error——至少要有 error boundary 跟 fallback UI。
MVP 的 M 是 Minimum,不是 Messy。最小可行不等於隨便亂搞。