在開發前端頁面時我們有多種樣式開發的選擇,可以選擇傳統的CSS寫法、使用UI Framework或Utility-first Framework等,為了達到加速開發的目的,通常我們會選擇後面兩者(使用UI Framework或Utility-first Framework)來進行開發。
首先我們來比較一下兩者的優缺點
UI Framework(使用者介面庫)
Boostrap4、Material UI、Ant Design
優點:
快速建立使用者介面: 專注於使用者介面的建立,提供了豐富的元件和工具,讓開發人員能夠輕鬆建立使用者友好的介面。
外觀一致性: 使用者介面庫通常提供預定義的樣式和主題,確保應用程式具有一致的外觀和風格,減少了設計工作的需求。
元件重複使用: 提供可重複使用的使用者介面元件,可以在應用程式的不同部分多次使用,提高了開發效率。
缺點:
不容易客製: 修改和客製使用者介面庫的樣式和行為可能會比較複雜,有時需要深入了解庫的內部工作原理才有辦法改動其樣式和行為。
依賴性: 通常需要與特定的使用者介面框架或庫一起使用,這可能會引入額外的依賴性和複雜性。
Utility-first Framework
優點:
缺點:
UI Framework和Utility Framework各有優缺點,所以還是可以依照開發情境還選擇適合的Framework。
我們來看一下維基百科的簡介
Tailwind CSS是一個開放原始碼CSS框架。這個工具庫的主要特點是,Bootstrap5 utilities 概念接近,與jQuery UI等其他 CSS 框架不同,沒有為按鈕或表格等元素提供一系列預定義類(UI元件)。相對的,會建立一個「工具程式型(Utility)」CSS 類別列表,這些類別可用於通過混搭和媒合來設定每個元素的樣式。
在開發前端頁面時,我們多少會使用過UI Framework,以Boostrap4
和Material UI
來說,基本上安裝後就可以直接使用裡面已經建立好的元件(component),UI Framework的元件通常也都很豐富,我們馬上就能生成出一個像樣的網站,但當我們要客製其樣式時就會遇到一些困難。
最大的困難就是當UI library沒特別設計客製化的方式時,我們必須要不斷地override元件原始的CSS,這種做法會造成CSS難以維護,當多人協作時,有可能造成樣式互相覆蓋,導致樣式不如預期,這時候TailwindCSS
的出現就能有效解決這問題。
回到我們的blog-frontend
專案,輸入以下指令安裝tailwindcss
npm install -D tailwindcss
npx tailwindcss init
設定tailwindcss.config
//tailwind.config.js
module.exports = {
content: [
"./src/**/*.{js,jsx,ts,tsx}",
],
theme: {
extend: {},
},
plugins: [],
}
在index.css內加入以下tailwind directive
/** index.css */
@tailwind base;
@tailwind components;
@tailwind utilities;
這樣我們就可以在專案內開始使用tailwindcss
了
🔺官方其實已經建議不要再使用CRA,因為Create React App 不支援自訂 PostCSS 配置,並且與 PostCSS 生態系統中的許多重要工具不相容,但此時我知道這資訊時已為時已晚☹️,之後私下會再自行改寫成Next.js。CRA和Next.js的比較
🔺tailwindcss
具體使用方式請見官方的文件,在這系列中不會特別提及。
headlessui-react 是一個由 Tailwind CSS 團隊開發的無 UI 元件庫。能讓開發者在不被任何樣式限制的情況下,能快速實現各種常用的 UI 功能(例如:下拉選單、Menu、彈窗等等)。
npm install @headlessui/react
安裝這個套件能讓我們快速產生行為較複雜UI元件,但同時又能保有樣式彈性,能依據自己想要的樣式(使用tailwindCSS)來開發。