Vibe Coder

讀懂 UI 元件庫:不從零畫,站在元件庫的肩膀上

UI 元件庫提供現成的按鈕、輸入框、對話框,內建無障礙與鍵盤操作支援,能省下大量從零開發的時間。shadcn/ui 是 AI 最常使用的元件庫,把程式碼複製到你的專案裡,讓你完全擁有並能自由客製化。
讀懂 UI 元件庫:不從零畫,站在元件庫的肩膀上

讀懂 UI 元件庫:不從零畫,站在元件庫的肩膀上

按鈕、輸入框、對話框、下拉選單這些元件都需要無障礙、鍵盤操作、暗色模式的支援,自己從零做要花很久,而且 AI 的訓練資料裡就有大量元件庫的範例,用元件庫反而能讓 AI 生出更準確的前端程式碼。

這篇帶你認識最常被 AI 使用的 shadcn/ui,學會安裝、讀文件、用常見元件,以及怎麼把整個 App 換成你自己的品牌色。

你將學到什麼

為什麼用元件庫

省時間、設計一致、AI 更懂,三個理由缺一不可。

shadcn/ui 是什麼

程式碼直接複製進你的專案,不是傳統的 npm 套件。

常用元件速查

Button、Input、Card、Dialog 這幾個先記熟。

客製化品牌色

改一組 CSS 變數,整個 App 的主題色就跟著換。

常見元件庫比較

元件庫特色適合
shadcn/ui程式碼複製到專案,完全可客製化Next.js 專案,想客製化
Material UIGoogle Material Design 風格,功能最齊全企業級應用
Ant DesignAlibaba 出品,表格和表單特別強後台管理系統
Chakra UI易用性高,主題客製化方便快速開發
AI 最懂 shadcn/uiAI 的訓練資料包含大量 shadcn、MUI、Ant Design 的範例,用元件庫能讓 AI 生出更準確的前端程式碼,但你還是要能讀懂文件,確認 AI 用的 Props 是正確的。

shadcn/ui:安裝與使用

shadcn/ui 不是傳統的 npm 套件,而是把元件程式碼複製到你的專案裡,你擁有完整的程式碼可以修改。

# 初始化(Next.js 專案)
npx shadcn@latest init

# 新增元件(程式碼會複製到 components/ui/)
npx shadcn@latest add button
npx shadcn@latest add input card dialog

# 在程式碼裡使用
import { Button } from "@/components/ui/button"
import { Input } from "@/components/ui/input"
import { Card, CardHeader, CardContent } from "@/components/ui/card"
shadcn/ui傳統 npm 套件components/ui/button.tsx程式碼在你的專案裡node_modules/ui-lib程式碼包在套件裡完全可見、可自由修改難以直接客製化
shadcn/ui 讓你擁有完整原始碼,傳統套件則是不易修改的黑盒子。

讀懂元件庫的文件

每個元件的文件通常包含 Props 列表、使用範例、客製化方式,重點是看懂 Props 的型別和預設值。

// variant 控制樣式,size 控制大小
<Button variant="default">預設按鈕</Button>
<Button variant="destructive">刪除</Button>
<Button variant="outline" size="sm">小按鈕</Button>
<Button disabled>不可點擊</Button>
<Button onClick={handleClick}>有事件</Button>

常用元件速查

元件用途關鍵 Props
Button按鈕variant、size、disabled、onClick
Input文字輸入框placeholder、value、onChange、type
Card卡片容器className(加內距和樣式)
Dialog彈出對話框open、onOpenChange
Select下拉選單value、onValueChange
Badge標籤徽章variant
Alert提示訊息variant(default、destructive)
Skeleton載入骨架屏className(控制大小)

客製化:改顏色和樣式

shadcn/ui 用 CSS 變數管理顏色,修改 globals.css 裡的變數就能改變整個主題。

:root {
  /* 主色 */
  --primary: 222.2 47.4% 11.2%;
  --primary-foreground: 210 40% 98%;

  /* 改成你的品牌色,紅色系 HSL */
  --primary: 0 80% 40%;
}
告訴 AI 你用的元件庫問 AI 前端問題時說明你用的框架和元件庫:「我用 Next.js 加 shadcn/ui,請幫我做一個有輸入框和按鈕的搜尋欄」,AI 能直接給出正確的 import 和元件用法。

給 AI 生 UI 的提示詞範例

我用 Next.js 14 加 TypeScript 加 shadcn/ui 加 Tailwind CSS。
請幫我做一個天氣查詢的主頁面:

功能需求:
- 頂部有搜尋欄(Input 加 Button)
- 搜尋後顯示天氣卡片(Card)
- 卡片顯示城市名稱、溫度、天氣描述
- 載入中顯示 Skeleton

設計要求:
- 整體垂直置中,最大寬度 600px
- Button 用 variant="default"
- 城市名稱用 h2,溫度用大字

請使用正確的 shadcn/ui 元件 import 路徑:

UI 生成後必做的三個確認

  1. import 路徑是否正確(是否已先用 add 指令安裝那個元件)。
  2. Props 名稱是否符合元件文件(不同版本的 shadcn Props 可能不同)。
  3. TypeScript 型別有沒有錯誤(編輯器出現紅線就要修)。

下一步的練習:在你的 Next.js 專案裡執行安裝指令,把 Card、Input、Button 這三個元件裝進去,請 AI 幫你組合出搜尋欄和天氣卡片的介面,再到官方主題頁挑一個喜歡的主題,把 CSS 變數貼進 globals.css,確認整個 App 的視覺風格跟著換了。

延伸學習

把這篇文章分享給需要的人FacebookLINEThreadsX

常見問答

shadcn/ui 跟一般的元件庫有什麼不同?
傳統元件庫是安裝一個 npm 套件,程式碼藏在 node_modules 裡;shadcn/ui 是把元件的程式碼直接複製到你的專案裡,你擁有完整的原始碼,可以自由修改。
怎麼安裝並使用 shadcn/ui 的元件?
在 Next.js 專案裡先執行初始化指令,之後每次要新增元件就用 add 指令把程式碼複製進 components 資料夾,再從專案內的路徑 import 進來使用。
要怎麼跟 AI 說明我用的元件庫?
直接告訴 AI 你用的框架和元件庫名稱,例如你用 Next.js 加 shadcn/ui,請它做一個有輸入框和按鈕的搜尋欄,AI 就能給出正確的 import 路徑和元件用法。
怎麼改變整個 App 的主題色?
shadcn/ui 用 CSS 變數管理顏色,修改 globals.css 裡的變數(例如主色的 HSL 數值),就能一次改變整個 App 的按鈕、卡片等元件的顏色。