Tailwind CSS 真有那么好嗎?討厭它的前六大原因
Tailwind CSS 是一個受歡迎的“實用優先”的 CSS 框架,聲稱可以幫助你更快、更輕松地創建自定義設計。然而,并不是每個人都對 Tailwind CSS 感到滿意。事實上,有很多原因讓你應該避免使用它,而堅持使用純 CSS 或其他框架。以下是你應該討厭 Tailwind CSS 的主要原因:
- 它失去了 HTML 和 CSS 的語義
- 它在你的 HTML 中大量添加類
- 它不具有可擴展性和可重用性
- 它生成的 CSS 文件龐大,影響性能
- 它只適合那些不想理解和學習 CSS 的人
- 它有一個龐大的庫,學習普通的 CSS 更容易
1.它失去了 HTML 和 CSS 的語義
Web 開發的主要原則之一是將你的網站的結構、表現和行為分開。HTML 旨在為你的內容提供結構和含義,CSS 旨在為你的元素提供表現和外觀,而 JavaScript 旨在為你的網站提供行為和交互性。
然而,Tailwind CSS 違反了這一原則,將表現與結構混合在一起。而不是使用反映你的元素的目的和功能的有意義和描述性的類名,Tailwind CSS 使用的是描述它們外觀的通用和難懂的類名。例如,以下是 Tailwind CSS 中的一個簡單卡片組件的樣子:
<div class="max-w-sm rounded overflow-hidden shadow-lg">
<img class="w-full" src="some-image.jpg" alt="Some image">
<div class="px-6 py-4">
<div class="font-bold text-xl mb-2">Some title</div>
<p class="text-gray-700 text-base">Some text</p>
</div>
</div>
這些類名并不能告訴你關于元素的意義或功能的任何信息。它們只告訴你它們是什么樣子。這使得理解和維護你的代碼變得困難,因為你必須記住每個類的作用以及它如何影響你的組件的布局和設計。
與此相比,使用純 CSS,你可以使用語義化和描述性的類名,這些類名反映了你的元素的含義和功能:
<div class="card">
<img class="card-image" src="some-image.jpg" alt="Some image">
<div class="card-content">
<div class="card-title">某標題</div>
<p class="card-text">某文本</p>
</div>
</div>
僅通過查看其類名,你就可以輕松地知道每個元素的功能,并通過編輯 CSS 文件來更改其外觀。
2.它使你的 HTML 充斥著大量的類
Tailwind CSS 的主要批評之一是它迫使你編寫充斥著數十個實用程序類的 HTML,使其難以閱讀和維護。例如,這是 Tailwind CSS 中的一個簡單按鈕的樣子:
<button class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">
點擊我
</button>
與此相比,在純 CSS 中,你可以使用單個類名并在單獨的文件中定義樣式:
<button class="btn-blue">
點擊我
</button>
純 CSS 比 Tailwind CSS 更簡潔和語義化。你可以輕松地通過查看其類名來知道按鈕的功能,并通過編輯 CSS 文件來更改其外觀。使用 Tailwind CSS,你必須記住很多類名及其含義,并且每次想要調整設計時都必須修改 HTML。
Tailwind CSS 主張將所有樣式放在你的 HTML 中,而不是將它們分離到不同的文件或層中。這違反了 Web 開發的核心原則之一:關注點分離。通過將表現與內容混合,你違反了代碼的模塊性和可維護性。你還使在不同的上下文或設備中重用或覆蓋樣式變得更加困難。
3.它不具有可擴展性和可重用性
Tailwind CSS 的另一個問題是它不具有可擴展性和可重用性。Tailwind CSS 鼓勵你通過對其應用多個實用程序類來單獨設置每個元素的樣式。然而,這導致你的代碼中出現重復和不一致,因為你必須為類似的元素重復相同的類或為不同的變體稍作更改。
例如,假設你有兩個看起來相似但顏色不同的按鈕:
<button class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">
藍色按鈕
</button>
<button class="bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded">
紅色按鈕
</button>
兩個按鈕除背景顏色外都有相同的類。這意味著你必須為每個按鈕重復相同的類,使你的代碼冗長和多余。此外,如果你想更改按鈕的某些內容,例如字體大小或邊框半徑,你必須在多個地方進行更改,這使得你的代碼容易出錯和不一致。
與此相比,在純 CSS 中,你可以為兩個按鈕使用單個類名,并使用修飾符或變量進行不同的變體:
<button class="btn btn-blue">
藍色按鈕
</button>
<button class="btn btn-red">
紅色按鈕
</button>
你可以為兩個按鈕使用單個類名,并使用修飾符或變量進行不同的變體。這使得你的代碼簡潔且一致,你可以在一個地方更改按鈕的某些內容。
4.它生成的 CSS 文件龐大,影響性能
Tailwind CSS 的另一個缺點是它生成的 CSS 文件龐大,可能會對你的網站性能產生負面影響。Tailwind CSS 附帶了數千個實用程序類,涵蓋了幾乎所有可能的樣式變體。然而,這些類中的大多數在你的項目中從未使用過,它們只是為你的 CSS 文件增加了不必要的膨脹。
根據官方文檔,默認的 Tailwind CSS 文件大小超過 2.4 MB,對于生產網站來說太大了。即使在壓縮文件后,它仍然保持在約 46 kB,這仍然比大多數其他 CSS 框架大。
為了減小文件大小,Tailwind CSS 推薦使用一個名為 PurgeCSS
的工具,該工具掃描你的 HTML 文件并從你的 CSS 文件中刪除任何未使用的類。然而,這為你的構建過程增加了額外的步驟,如果 PurgeCSS
未能檢測到在你的代碼中動態或有條件地使用的某些類,它也可能引入錯誤。
- 它只適合那些不想理解和學習 CSS 的人
Tailwind CSS 也對你學習和理解 CSS 產生了負面影響。使用 Tailwind CSS,你實際上是依賴于一個聲稱是 CSS 樣式替代品的框架,但實際上仍然需要你知道 CSS 樣式來使用它。例如,你仍然需要知道如何使用 flexbox、grid 或 position 屬性來布局你的元素,但是你不是直接在你的 CSS 文件中使用它們,而是使用模仿它們的 Tailwind CSS 類。
以下是文章的翻譯:
5.它只適合那些不想理解和學習 CSS 的人
Tailwind CSS 也對你學習和理解 CSS 產生了負面影響。使用 Tailwind CSS,你實際上是依賴于一個聲稱是 CSS 樣式替代品的框架,但實際上仍然需要你知道 CSS 樣式來使用它。例如,你仍然需要知道如何使用 flexbox、grid 或 position 屬性來布局你的元素,但是你不是直接在你的 CSS 文件中使用它們,而是使用模仿它們的 Tailwind CSS 類。
這不僅令人困惑,而且容易誤導。你并沒有學習實際的 CSS 屬性和值,而是學習 Tailwind CSS 類及其含義。這可能會讓你認為你知道 CSS,但實際上,你只熟悉 Tailwind CSS。如果你遇到 Tailwind CSS 未提供你需要的類的情況,或者你想切換到另一個框架或工具,你將很難理解或編寫實際的 CSS 代碼。
6.它有一個龐大的庫,學習普通的 CSS 更容易
Tailwind CSS 為每種可能的場景提供了數千個實用程序類,但這也意味著你必須記住或查找所有這些類及其含義。這可能會令人不知所措,尤其是對于 Web 開發的新手來說。
此外,Tailwind CSS 并不遵循 CSS 的標準命名約定或語法。例如,它不使用破折號或駝峰命名來分隔類名中的單詞,而是使用冒號或括號。它不使用百分比或像素來指定值,而是使用任意的數字或字母。這可能會使你的代碼看起來不一致和不熟悉。
相比之下,學習普通的 CSS 要簡單得多,也更直觀。你只需要學習標準化的、得到瀏覽器廣泛支持的基本屬性和值。你還可以使用自定義屬性或變量來創建符合你需求的自己的命名約定和值。你還可以使用在線資源或工具來交互式和直觀地學習和練習 CSS。