cover

概念圖

花半天把基礎架構想清楚,能讓後續幾個月的開發快非常多。這不是 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。最小可行不等於隨便亂搞。


延伸閱讀