前端UI元件命名規範實戰指南

2026 SEO 終極教學

按鈕到底叫 Btn、Button 還是 Action?開發維護的隱形痛點

「這顆按鈕在 Figma 叫 PrimaryAction,程式碼裡卻寫著 .btn-blue-v2,到底要改哪一個?」這是我們團隊在輔導企業官網改版與程式碼審查時,最常聽到的工程師嘆氣。許多團隊在專案初期為了求快,大家各寫各的,直到網站上線半年、功能持續疊加後才發現:改一個結帳按鈕的間距,竟然影響了全站五個不同頁面的表單排版。

UI 元件命名看起來只是寫程式碼時的小細節,但從商業營運的角度來看,它直接決定了跨部門溝通的摩擦成本與改版維護的報價高低。當設計師、行銷人員與前端工程師對同一個介面物件沒有共識,每次小幅度的 UI 調整就會演變成來回確認的災難,甚至因為命名重複污染全域樣式,導致線上轉換率無端受損。

在探索介面架構時,Smashing Magazine 創辦人 Vitaly Friedman 也曾深入探討介面語意化的結構問題。

延伸閱讀:A Practical Guide To Naming Things

為什麼隨性命名會讓專案後期成本翻倍

我們實測多個中大型企業專案的維護紀錄後發現,程式碼缺乏一致的 UI 元件命名規範,主要會引發三大營運痛點:

  • 樣式覆蓋與命名衝突:命名太過寬鬆(例如直接使用 .card 或 .title),新功能一上線就意外覆蓋了舊有元件的樣式,造成排版跑版。
  • 認知負擔與協作脫鉤:新加入的工程師無法從名稱判斷該元件的「功能」是什麼,只能不斷重複造輪子,寫出功能一模一樣但名稱略異的重複元件。
  • 自動化與分析埋點混亂:當行銷團隊想要透過代碼追蹤使用者行為時,難以從混亂的 DOM 結構中精準定位目標元件。若想避免追蹤數據失真,可以參考伺服器端代碼閘道如何拯救行銷追蹤漏失的架構思維,從底層梳理數據流向。

[插入圖片:展示混亂命名的 CSS 程式碼與具備清晰語意結構的元件代碼對比畫面]

三層式語意架構:從意圖出發而非視覺外觀

許多人在命名元件時最常踩的坑,就是「以視覺外觀命名」。例如將警示方塊命名為 .red-box,結果三個月後品牌主視覺調性更新,警示顏色改為深橘色,這時工程師就陷入了要大費周章全域取代名稱、還是容忍程式碼指鹿為馬的兩難。

我們建議採用「意圖導向(Intent-driven)」的三層式命名架構:

1. 區塊層(Block / Scope)

定義元件所屬的獨立功能情境或介面區塊,表達「它是什麼」。例如:card(卡片)、navbar(導覽列)、modal(彈窗)。這個層級應該具備完全的獨立性,不依賴外部父層環境。

2. 元素層(Element)

定義區塊內部的組成部分,表達「它在區塊中的角色」。例如:card__header(卡片標頭)、card__content(卡片內文)、card__action(卡片操作區)。元素層必須依附於區塊,不能脫離區塊單獨存在。

3. 修飾層(Modifier / State)

定義區塊或元素的狀態、外觀變體或行為差異,表達「它目前的狀態或特徵」。例如:card--highlighted(高亮卡片)、button--loading(載入中按鈕)、is-active(啟用狀態)。

常見 UI 元件命名風格與適用情境對照表

實務開發中沒有單一放諸四海皆準的完美規則,關鍵在於團隊規模與維護成本的權衡。以下是我們在不同專案型態中最常評估的四種命名架構比較:

命名方法論 核心特點 主要優點 潛在限制與缺點 適用專案規模
標準 BEM(區塊__元素–修飾符) 使用雙底線與雙連字號嚴格劃分層級 結構極其清晰,完全避免樣式污染,易於團隊理解 class 名稱較長,對於小型靜態頁面稍微繁瑣 中大型企業官網、長期維運專案
語意化實用優先(Tailwind / Utility) 透過預設 class 直接組合樣式 開發速度極快,不用為每個小樣式想名稱 HTML 結構冗長,若無封裝元件維護成本高 敏捷新創、SaaS 儀表板、短檔期活動頁
模組化 CSS(CSS Modules) 自動編譯出雜湊(Hash)後綴名稱 本質上根除命名衝突,完全封裝元件 除錯時樣式名稱可讀性較低,跨框架共用門檻高 React / Vue 單頁應用與微前端架構
設計權杖對齊(Design Tokens) 以功能意圖與層級作為變數名稱(如 color-action-primary) 設計系統與程式碼命名完全同步,跨平台共用 初期架構規劃成本高,需要跨部門高度配合 多品牌跨國集團、成熟設計系統元件庫

[插入圖片:設計系統中 Figma 元件名稱與前端程式碼變數對應架構圖]

落地執行:建立團隊命名規範的四個實戰步驟

想讓設計與工程團隊真正落實一致的命名,光發布一份文件通常成效不彰。我們歸納出四個具體可執行的推動步驟:

步驟一:建立通用介面詞彙表(Ubiquitous Language)

在專案啟動時,先由設計主管與前端工程師開會,共同制定常用名詞清單。約定好全站所有「彈出式訊息」統一叫 Toast 還是 Snackbar;分頁按鈕統一叫 Pagination 還是 Pager。一旦詞彙確定,就嚴禁在 Figma 或程式碼中任意替換同義詞。

步驟二:定義布林值與狀態前綴詞

針對互動元件的動態狀態,強烈建議統一採用以 is- 或 has- 開頭的語意類名:

  • is-active:表示當前處於啟動或選中狀態。
  • is-disabled:表示目前無法點擊或互動。
  • is-loading:表示正在背景發送 API 請求。
  • has-error:表示表單欄位驗證未通過。

當團隊需要針對表單進行轉換漏斗分析與驗證防呆時,規範化的狀態類名能大幅降低資料埋點難度。關於表單體驗的細節優化,可進一步參考WordPress表單流失率分析與轉換率優化全攻略中的實務檢測指標。

步驟三:規範修飾詞(Modifiers)的層級順序

當元件同時具備多種屬性時,團隊必須約定屬性的先後順序,例如:[元件名稱]--[尺寸]--[功能色彩]。這樣寫出來的 class 永遠會是 btn--lg--primary,而不會在另一個頁面變成 btn--primary--large,保持搜尋與全域替換時的高度一致性。

步驟四:透過 Linting 工具自動化檢驗

不要依賴人肉審查命名。在前端構建流程中加入 stylelint 與命名驗證外掛,只要有人提交了未遵循規範的 class 名稱(例如包含駝峰式大小寫或未定義的隨意縮寫),CI/CD 流程自動中斷並發出提醒,從工具面守護程式碼品質。

前端 UI 元件命名健康度自我檢查清單

在提交新頁面或審查現有網站程式碼時,請使用這份檢查清單快速掃描:

  1. 意圖檢驗:類名是否包含了具體顏色、具體像素尺寸(例如 .blue-button、.font-14)?若有,請改為功能性名稱(例如 .btn--primary、.text-sm)。
  2. 階層深度:BEM 命名是否出現超過兩層的巢狀結構(例如 .card__header__title__link)?過深的命名代表元件職責過於龐大,應拆解為獨立的次元件。
  3. 共用詞彙:該元件的 class 名稱是否與 Figma 中的元件命名完全對應?
  4. 縮寫限制:是否使用了未在團隊文件中定義的縮寫(例如 .cnt 代表 content、.nav-itm 代表 item)?除非通用,否則優先使用完整單字。
  5. 狀態解耦:狀態類名是否獨立於樣式實現,只負責描述互動狀態?

常見問答集

為什麼不乾脆用自動生成的隨機雜湊名稱來避免命名爭議?

現代前端工具(如 CSS Modules 或 Styled Components)確實會自動編譯雜湊名稱,這能百分之百防止命名污染。但它並不能免除團隊的命名工作。工程師在寫原始碼檔案、React 元件名稱、Design Tokens 變數時,依然需要清晰的命名,否則新進成員打開專案依然看不懂架構,除錯時更會增加搜尋難度。

如果目前網站已經累積了大量舊程式碼,該如何著手重構?

千萬不要嘗試一次性全站大重構,那通常會演變成災難。合理的做法是「劃定新舊邊界」:先為新功能或即將大改版的獨立模組制定新規範;舊有模組維持現狀,只在日常維護修改到該模組時,依據「童子軍法則(離開時比抵達時更乾淨)」逐步遷移。

設計系統(Design System)中的命名該由設計師主導還是工程師決定?

命名必須是跨職能共識的產物。設計師通常對「介面視覺階層與使用情境」有直覺理解,而工程師更關注「可擴充性、程式碼重複使用率與繼承關係」。最佳做法是由資深設計師與前端架構師共同制定詞彙表,確保 Figma 與代碼庫雙向同步。

打造結構清晰的高效能企業官網

介面元件命名的嚴謹度,往往直接反映了企業數位資產的維護品質。雜亂的程式碼不僅拖慢團隊的新功能上線節奏,更會因為載入冗餘樣式而犧牲 Core Web Vitals 效能表現。如果您正在規劃企業官網改版,或發現現有網站架構難以擴充維護,歡迎與我們的技術專家聯繫,為您的網站進行全面的架構健檢與前端程式碼體檢,打造既具備良好使用者體驗又易於長期維護的高品質官網。

開源電商平台是企業長線優勢嗎 評估靈活性與成本的關鍵

當企業在規劃官網或大型電商時,平台選型往往決定了未來幾年的營運成本與擴充彈性。市面上常見的選擇分為兩大陣營:一 […]

WooCommerce速度變慢怎麼救 免寫程式排查指南

結帳頁多轉三秒,顧客直接關掉視窗 很多店長每到行銷大檔,花了大筆廣告費把精準買家帶進官網,後台卻只看到滿滿的未 […]

前端UI元件命名規範實戰指南

按鈕到底叫 Btn、Button 還是 Action?開發維護的隱形痛點 「這顆按鈕在 Figma 叫 Pri […]

Contact

:@168uhecy
:service@fz-cloud.com

© 2026 Felix. All Rights Reserved.