iT邦幫忙

2023 iThome 鐵人賽

DAY 30
1

CSS 是作為一名網頁開發人員,必須要學習的語言,近幾年來,Tailwind CSS 逐漸成為 CSS 框架的主流,Tailwind CSS 是一種以實用優先 (Utility-first) 的 CSS 框架,原子化 CSS (Atomic CSS) 的一個實現,與傳統的 CSS 框架如 Bootstrap 不同,Tailwind CSS 不提供一整套預先定義的 UI 元件或抽象化的類別名稱,而是提供了一堆能夠組成 CSS 規則的類別標記,提供我們在元素類別中做撰寫,網頁可以靠著 Tailwind CSS 可以很快速的來堆疊元素與樣式,不必再煩惱抽象化類別或客製化 UI 的窘境。

都是為了解決開發上的體驗

Master CSS 與 Tailwind CSS 具備有許多相似的地方,但是嚴謹一點來說,Tailwind CSS 所做到的事情,只佔 Master CSS 一部分,Master CSS 不僅僅只是原子化 CSS (Atomic CSS),更是一個能夠增強 CSS 使用的 CSS 標記語言,它的最終目的是為了讓 HTML 和 CSS 更加無縫,以解決開發上的不適。

更少的學習時間

現在市場上有許多 Atomic CSS、Utilities-first CSS 的實現框架,但往往因為框架內自訂了許多類別名稱與原生 CSS 有一些分別,導致了學習上需要記憶這些類別你才能開始使用,如果你有學習或使用過 Tailwind CSS,肯定翻了不少文件查了不少類別樣式對照表吧!

Master CSS 在類別標記的使用上,可以做到與原生 CSS 相同的聲明方式甚至原生的行為,只要你會寫原生 CSS,在你初次使用 Master 時,在類別的標記上基本不需要學習就可以開始在類別名稱中做標記,而當你需要進一步優化或減少類別標記時的名稱,可以透過 Master CSS 所提供的縮寫、速記簡寫甚至是語意的類別名稱,來快速的聲明樣式類別。

更快的即時編譯時間

Tailwind CSS v2.1 版本,導入了 JIT 即時編譯,讓 Tailwind CSS 具有可以自訂 CSS、直接使用任意的 Variants 以及能夠更快建構樣式等,甚至解決了開發與生產環境可能發生類別名稱消失的問題。

而 Master CSS 也支援 JIT 的即時編譯,甚至在單一類別的生成能夠快上數十倍以上,而且 Master CSS 也具備有靈活的配置可以依據實際情境與配合的前端框架,來選擇不同的編譯或渲染模式。

渲染模式與編譯方式

Tailwind CSS 依賴著 PostCSS 在最終專案建構打包時,依照專案內所使用到的類別來進行類別的產生。

Master CSS 也在 v2 版本支援在建構打包時,進行靜態提取,將專案內使用到的類別產生出虛擬 CSS 模組或檔案提供給網站做使用。

而 Tailwind CSS 與 Master CSS 所支援的 JIT 即時編譯,其實也有實際上的差異,Tailwind CSS 的 JIT 只能夠在開發時期做使用,最終建構打包後這些被使用的類別都將產生為 CSS,前端使用時也無法使用那些沒有被打包進 CSS 樣式中的類別來使用樣式。

Master CSS 的 JIT 即時編譯,能夠在開發與生產環境時,載入渲染核心觀察網頁 DOM Three 中類別名稱的變化,並即時的產生對應的 CSS,以此便能實現動態賦予類別標記並套用樣式的效果,算是更名符其實的即時編譯與渲染。

Master CSS 更提供了一種渲染模式——漸進式渲染(Progressive Rendering),讓網站部署時可以先進行靜態提取類別樣式,前端瀏覽器繪製時就可以更快的套用樣式規則,而同時前端也會非同步的載入 Master CSS 核心,在前端的 JS 程式碼為網頁中的類別名稱做任何的調整,都能像 JIT 即時編譯的模式來立即的產生 CSS 規則並添加至樣式表中做套用。

更小的導入成本

Tailwind CSS 同常與 PostCSS 做使用,打包建構時會經過預處理來產生最終的 CSS 檔案,這意味著伺服器需要負擔這些檔案的傳輸成本。

而 Master CSS 透過 JavaScript 所實現的渲染核心,可以在瀏覽器即時的產生這些樣式,這個核心的 JavaScript 的檔案大小只有不到 20KB,你就能擁有比 Tailwind CSS 更優秀的渲染效能與動態賦值等效果。

更多豐富的與實用的設計

Master CSS 得益於依賴原生的 CSS 寫法與行為,在許多功能上可以做得比 Tailwind CSS 更好與更多,Master CSS 現在的版本具備了以下實用的特性,是在 Tailwind CSS 上比較難實踐的:

  • 可以使用原生的 CSS 與自訂類別屬性來使用本地或尚未添加的 CSS 屬性
  • 動態的類別名稱調整,能夠即時的產生樣式並套用
  • Master CSS 的 CSS 規則相較於 Tailwind CSS 更短更實用
  • 幾乎不會發生要語意不語意的情況,例如 Tailwind CSS leading-6 可能需要查表才會知道表示 line-height: 1.5rem
  • Master CSS 不像 Tailwind CSS 使用了大量的 Variables 導致瀏覽器計算樣式成本增加
  • 具備開箱即用的類別群組功能
  • 具備 Shadow DOM 與子元素的控制能力
  • etc.

主流框架比較

Master CSS Tailwind CSS Bootstrap
定位 CSS 標記語言 實用性 CSS CSS Library
依賴 🟢 零依賴 🔴 PostCSS, Autoprefixer, Build Tools 🟢 零依賴
編譯模式 Master CSS Tailwind CSS Bootstrap
AOT
JIT
SSR
混合渲染
輸出與傳輸檔案大小 Master CSS Tailwind CSS Bootstrap
固定成本 🟠 <20KB 🟢 - 🔴 Library 檔案大小
CSS 來源 🟢 JIT 或 AOT 預先產生 🟠 各個頁面的 CSS 檔案 🔴 整個 Library
樣式傳輸成本 🟢 僅 AOT 預先產生的 CSS 才需要傳輸 🔴 各個頁面的 CSS 檔案 🟢 -
渲染 Master CSS Tailwind CSS Bootstrap
渲染阻塞資源 🟢 由核心生成 CSS 🔴 需額外下載 CSS 檔案 🔴 需額外下載 CSS 檔案
首個完整的網頁內容 🚀 最快 ✈️ 快速 🏎 正常
載入大小 Master CSS Tailwind CSS Bootstrap
頁面載入的 CSS 大小 🟢 最小 🟠 較大 🔴 最大
快取目標策略 HTML CSS CSS
開法者工具 Master CSS Tailwind CSS Bootstrap
程式碼自動完成
類別名稱突出顯示
CSS 產生預覽
Linting

總結

Tailwind CSS 是一個很不錯的框架,它所提供的功能確實打到了許多開發者的痛點,因此才造就了現在的地位,Master CSS 雖然現在還處於 v2 的測試版,但是功能方面已經非常強大,如果你在 Tailwind CSS 上有遇到一些問題或想嘗試新的 CSS 撰寫方式,推薦你可以使用 Master CSS。

如果你還在觀望那麼我能跟你說的是,前端的工具會越來越好,我們要學習的東西也持續在進步,既然你都使用過 Tailwind CSS 了,何不嘗試看看 Master CSS 呢?Master CSS 更多的實用功能與酷炫的設計也在未來會持續地釋出,不用再猶豫了,現在!就是加入 Master CSS 的時刻。

期望這個由🇹🇼台灣團隊所開發的 Master CSS 能夠撼動 Tailwind CSS 的地位,相信 Master CSS 也能成為下一代 CSS 的解決方案!


上一篇
Master CSS 的渲染模式(Rendering Modes)
系列文
下一代 CSS 解決方案:Master CSS 具增強語法的虛擬 CSS 語言30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言