如何兼顧體驗一致性與前端開發的效率?

標題是在公司的產品 SWAP 逐漸成熟後我開始思考的課題。若你是 PM 或是前端工程師,希望這篇文章能對你有所啟發!

October 24, 2020 - 1 minute read -
learn startup web

SWAP 在前端介面使用的設計框架是 Google Material Design,這套框架的優勢在於: 由谷歌維護、支援 React、已被廣泛應用於 APP 或是網頁,因此使用者對於這介面有種熟悉的感覺!

雖然 MATERIAL-UI 很棒,但也不是用了介面框架後什麼事情能解決,例如:

  • 設計框架僅提供基礎的功能
    一個蓋板視窗,官方的示意相對簡約。開發者需要再探索、設計視窗內的格式

  • MATERIAL-UI 的代碼很冗長
    為了小小的功能需要寫了一長串的代碼

  • 沒有封裝類似功能的元件
    類似功能的代碼各自野蠻生長,降低用戶體驗一致性

最初的解法是是在專案內建立常用的元件庫,然後在不同的頁面各自去引用,不久後還是有些瓶頸,像是:

  • 元件如何設計位置架構?如何命名?
  • 遇到更改檔名或是移動位置時,要一一修改引用的相對路徑
  • 懶得再去看共用元件,造成同事重新寫了類似的代碼

大約在今年 10 月左右,我們開始在開發 SWAP 專用的元件庫 SWAP-UI。SWAP-UI 的設計概念是用 MATERIAL-UI 為基礎開發成產品專用的元件。舉例來說:

多步驟的 Modal 視窗
在 MATERIAL-UI 的 Modal 內擴充多個步驟的功能

依據狀態顯示的對話視窗
在 MATERIAL-UI 內的 Dialog 增加狀態的屬性,用顏色傳達目前對話視窗的狀態

頁面提示
用 MATERIAL-UI 內的元件組合成頁面上的提示看板

透過自建的元件庫可以讓體驗保持一致,開發時可以只要將元件的屬性填入,減少構思排版與建立元件架構的時間。額外的好處還有元件庫可以讓多個應用程式使用、更新時只要一個指令升級套件即可!

更多的 SWAP-UI 的示意請點此

最後如果你已經確定要開發自己的元件庫,可以看看這篇參考資料(Creating a React Component Library using Rollup, Typescript, Sass and Storybook),還在猶豫的小夥伴們,也許能看看這篇(Should you build your own React component library?)