iT邦幫忙

2026 iThome 鐵人賽

DAY 12
0
Vibe Coding

Vibe Coding的30天,自然語言與AI共舞,從Prompt到高品質原型落地系列 第 12

Day 12|階段性驗收第一階段MVP畫面展示與Code Review

  • 分享至 

  • xImage
  •  

今天我們正式來到了Phase2(快速原型生成與UI/UX實戰)的最後一天。

從Day06的第一個Tailwind靜態卡片開始,到Day11注入FramerMotion彈性微互動,我們僅用了不到一週的時間,就用自然語言打造出一個外觀精緻、互動流暢、且支援深淺色主題切換的VibePulse技能儀表板MVP前端原型。

在邁入Phase3(後端API與資料庫串接)之前,今天我們將進行一場標準的階段性CodeReview與總驗收。這不僅是展示成果,更是確保我們的代碼庫沒有因為高速VibeCoding而堆積成義大利麵包(SpaghettiCode)。

1.Phase2成果總覽與視覺巡禮
讓我們先來點算這7天完成的成果:
VibePulseDashboardMVP

[Header]品牌標誌+全域深淺色主題切換(ThemeToggle)
[Metrics]4欄式數據統計卡片(DashboardOverview)
[Controls]搜尋框+篩選器++新增技能按鈕
[Cards]動態技能列表(SkillCardList+FramerMotion微互動)
[Modals]新增技能彈窗(AddSkillModal)+刪除確認(DeleteSkillDialog)
[Notifications]Sonner系統操作Toast通知
亮點特徵:
視覺與質感:徹底落實語義化CSS變數(DesignTokens),一鍵切換DarkMode毫無違和感。

資料與狀態:結合強型別Schema與擬真領域MockData,具備流暢的Modal彈窗、表單驗證與刪除邏輯。

體感互動:採用FramerMotion物理彈性參數,卡片具備hover上浮、點擊壓下與錯落入場(StaggeredFade-in)動畫。

2.階段性CodeReview:用AI當你的CodeReviewer
在VibeCoding流程中,讓AI幫你審查AI自己寫的代碼是一個極度高效的品質防線。因為經過數十輪對話後,局部修改可能引入了冗餘的變數、重複的邏輯或是遺漏的TypeScript型別。
Prompt範例:請AI執行CodeReview清單
開啟Cursor,對著整包@components/檔案目錄發送Prompt:
@components/(請檢查components目錄下的所有檔案)

請扮演一位資深的Front-endTechLead,對現有的前端組件進行全面CodeReview。請針對以下4個維度進行評估,並給出明確的修改建議或優化後的代碼片段:

1.可維護性(DRY原則):是否有重複出現的UI邏輯或Helper函數可以抽象化?
2.TypeScript嚴格度:是否存在任何隱式any、不嚴格的TypeCast、或是可以更精準定義的Interface?
3.效能優化(Performance):是否有未必要的Re-render隱患?(如:未Memoize的大陣列計算或事件Handler)
4.無障礙性(Accessibility/a11y):互動元素是否缺漏了aria-label或鍵盤導覽支援?

3.CodeReview發現的典型問題與重構實踐
經過AI評估,我們發現了以下3個在快速開發時經常被忽視的程式碼細節:
問題1:類別樣式重複定義(RepeatedCategoryStyles)
在SkillCardList.tsx與其他Modal中,categoryStyles與getProgressColor等樣式對映logic被重複撰寫了三次。
優化方案:抽離至@lib/utils/skillHelpers.ts

//lib/utils/skillHelpers.ts
import{SkillItem}from'@/mocks/skillsData';

exportconstCATEGORY_STYLES:Record<SkillItem['category'],string>={
Frontend:'bg-blue-500/10text-blue-400border-blue-500/20',
Backend:'bg-purple-500/10text-purple-400border-purple-500/20',
AI:'bg-emerald-500/10text-emerald-400border-emerald-500/20',
DevOps:'bg-amber-500/10text-amber-400border-amber-500/20',
};

exportconstgetProgressColor=(val:number):string=>{
if(val>=80)return'bg-emerald-500';
if(val>=50)return'bg-blue-500';
return'bg-amber-500';
};

問題 2:Missing aria-label 與無障礙補強
部分 Icon Button (例如刪除與關閉按鈕) 缺乏 aria-label,這會導致螢幕閱讀器使用者無法得知按鈕用途。
優化方案:

// 補強前
<button onClick={onClose} className="...">
  <X className="w-5 h-5" />
</button>

// 補強後
<button 
  onClick={onClose} 
  aria-label="關閉彈出視窗"
  className="..."
>
  <X className="w-5 h-5" />
</button>

4.人類指揮官的Phase2驗收CheckList
在按下GitCommit並為Phase2劃下句點前,請確認以下CheckList:
[x]畫面無Bug:瀏覽器Console視窗沒有跳出任何ReactKeyWarning或HydrationError。
[x]動態響應(RWD):在Mobile(375px)、Tablet(768px)與Desktop(1440px)尺寸下排版均正常。
[x]主題一致性:切換Dark/LightMode時,所有卡片與Modal文字皆清晰可讀。
[x]GitCleanCommit:完成檔案抽離重構,執行gitadd.與gitcommit-m"feat:completePhase2MVPUI/UXwithFramerMotionandCleanCodereview"。

5.Phase2小結與心法提煉這7天的實戰經驗證明了:
自然語言不僅能用來寫Code,更能大幅縮短專案從概念到精緻原型的迭代週期。
只要我們掌握了明確規格$\rightarrow$語義化CSS$\rightarrow$小步快跑Ping-Pong$\rightarrow$CodeReview的節奏,就能在維持高程式碼品質的前提下,享受極速交付的樂趣。


上一篇
Day 11|動畫與細節修飾用自然語言描述微互動
下一篇
Day 13|後端API設計叫AI幫你畫Sequence Diagram與API規格
系列文
Vibe Coding的30天,自然語言與AI共舞,從Prompt到高品質原型落地14
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言