問題
- 畫面老舊且各自獨立
- 團隊對元件庫期待不一
- 元件重工、溝通成本高
引言
過去產品的主力放在 App 裝置,Web 作為企業端的輔助功能相對陽春且零散。但隨著企業客戶的質(企業規模)與量(企業總數)快速成長,對 Web 的需求日益增大,隨之而來的開發問題也越來越多:元件不一致、重工、溝通成本,導致開發進度落後。
「這個元件在其他地方長得不一樣」,時常是測試時才被發現的問題。
不像 App 已有明確的設計規範(HIG & Material Design),我決定統整四散各處的元件,建立一個能夠減少資訊落差的設計系統。
角色
Web Designer
狀態
類型
工具







情境
產品初期以 App 為主,Web 端的元件是隨著需求一塊塊長出來的,彼此沒有共用來源。當企業客戶快速成長、Web 的開發量暴增,問題也跟著浮現,工程師開始頻繁回報:「這個按鈕怎麼跟 A 頁面又不一樣了?」「現在按鈕有好多種版本,到底要用哪一個?」每一次不一致,都變成一次來回確認與重工。
限制
深入盤查後發現,同樣的元件被複製在不同專案裡各自維護,專案 A 有一套、專案 B 又有一套,彼此重疊卻不同步,改了一邊另一邊就對不上。而我面對的限制很現實:產品仍在高速迭代、團隊也沒有多餘人力停下來重做設計系統。我必須在「不拖慢產品主線」的前提下,把四散的元件慢慢收斂成一套。
準備工作
動手前,我先訪談了最關鍵的三方:設計師、工程師、產品經理,想知道他們對元件庫真正的期待。整理後,需求分別落在一致性、模組化,以及清楚的文件紀錄,這也成為我後續取捨的判準。
接著我化身考古學家開始翻歷史檔案、讀工程師的程式碼、反覆把玩產品,再逐一和工程師確認邊界行為。最終盤點出包含樣式、字體、元件共 34 個需要建構的項目,並追蹤每一項的完成狀態,讓整件事第一次有了全貌。
執行
起初只有 Color System 有明確規範,但 Space、Elevation、Icon 這幾塊完全沒有規則可循,每次用多少間距、陰影要疊幾層,都是憑感覺決定。
過程中我跟工程師討論過要不要引進語義化 Token(例如把顏色分成 primary、danger 這種語意層)也一起做進去。我們的結論是:現階段最急迫的是把「完全沒有規則」的部分補起來,語義化雖然是更完整的做法,但不是當下的痛點,所以先擱置。
執行
過去交付稿件時,元件的狀態常常是我跟工程師吵得最兇的地方。
「沒畫面,就不開發」這是工程師的立場;而我的立場是:同一個元件,本來就該有一樣的互動狀態,不用每個專案都要溝通一次。這個認知落差,讓測試階段變成無止盡的修修補補,花掉大量時間在來回確認「這個狀態到底要不要做」。
所以我參考了 Element Plus 這套成熟的設計系統,把每個元件該有的狀態全部攤開,一次講清楚。工程師開發時不用再問我「這個要不要做」,因為答案已經寫在規範裡了。
執行
即使元件的外觀都定義好了,設計師跟 PM 還是常常跑來問我:「這個元件可以用在哪裡?」,他們想知道什麼情境該用、什麼情境不該用,光列出元件的樣貌是猜不出使用邏輯。
所以我參考了 Ant Design,它在每個元件的使用說明上做得很清楚,什麼場景適合、什麼場景要避免,都寫得非常清楚。我照著這個邏輯整理出自己的使用規則,同時也跟 App 端的設計師來回討論,確保 Web 跟 App 在同一個元件上給使用者的體驗一致,而不是兩套各自表述的邏輯。
結果
時至今日設計系統的維護依然在進行,但在完成後的 2、3 個專案就已經看到明顯的成效。
它成為工程師開發時的重度使用工具,交付速度更快、錯誤更少。在某些情況下,原本需要一週才能完成的工作,現在三到四天就能完成。
50%
設計時間
66%
開發 BUG 數
50%
初稿通過率
學習
一旦有了一套系統把規則講清楚,很多摩擦自然就消失了。
團隊不用再花時間吵「這個要不要做」,可以把心思放在真正重要的事情上;開發過程中的不一致變少了,專案也跟著跑得更快。