大家好,我是長林啊!一個愛好 JavaScript、Go、Rust 的全棧開發者;致力於終生學習和技術分享。
本文首發在我的微信公眾號【長林啊】,歡迎大家關注、分享、點贊!
在之前,我也寫過一篇《打造高效React應用:CSS方案深度解析》,裏面介紹到內聯樣式、CSS 類、CSS Modules 和 CSS-in-JS 技術,在 Next.js 中也同樣是適用,如果有不熟悉的,可以到公眾號 「長林啊」中去看!
我們這裏就不在做同樣的贅述,而是看看 Next.js 生態中有哪些好用的 UI 庫。
1. tailwindcss
Tailwind CSS 改變了傳統的 CSS 編寫方式,使得開發者能夠以更高效和靈活的方式構建用户界面,適合各種規模的項目。
主要特點
- 實用優先的設計:Tailwind 提供了大量的低級 CSS 工具類,使開發者可以直接在 HTML 中組合使用這些類來構建設計,而無需離開標記。
- 高度可定製:用户可以通過配置文件自定義顏色、間距、字體、斷點等,以滿足特定項目需求。
- 響應式設計:Tailwind 支持響應式設計,允許開發者使用不同的類為不同設備和屏幕尺寸配置樣式。
- 內置的狀態變體:Tailwind 提供了偽類變體(如 hover、focus),使得在同一類中應用不同狀態的樣式變得簡單。
- 插件系統:Tailwind 的插件機制允許開發者擴展框架的功能,添加自定義工具類或組件。
2. shadcn ui
shadcn/ui 是 2023 年在 GitHub 上星星數量增長最多的項目,總共獲得了 39.5k 的 star,而且在 2023 年 1 月的時候才在 GitHub 發佈,到目前為止(2024年11月4日)已經增長到 73.6K star;它是開源 UI 組件庫;可以複製和粘貼到你的應用程序中的可訪問且可自定義的組件。
主要特點
- 可訪問性:Shadcn UI 注重可訪問性,確保組件符合 WAI-ARIA 標準,便於所有用户使用。
- 無樣式設計:組件本身不附帶樣式,允許開發者根據項目需求自由定製外觀,確保與整體設計一致。
- 可組合性:組件設計為高度可組合,開發者可以輕鬆地將多個組件結合使用,構建複雜的用户界面。
- 與 Tailwind CSS 集成:Shadcn UI 可以與 Tailwind CSS 配合使用,使得樣式定製更加靈活和高效。
- 響應式設計:組件支持響應式佈局,適應不同設備和屏幕尺寸,提供良好的用户體驗。
3. chakra ui
Chakra UI 是一個全面的可訪問、可重用和可組合的 React 組件庫,可簡化現代網絡應用程序和網站的開發。目前已經迭代到 v3 版本(2024年10月22日發佈),可輕鬆構建複雜的用户界面,同時遵循可訪問性最佳實踐。
主要特點
- 易用性:Chakra UI 提供了直觀的 API,開發者可以通過簡單的組件和屬性快速構建界面。
- 可訪問性:所有組件都遵循無障礙設計原則,確保應用對所有用户(包括殘障人士)友好。
- 主題定製:提供內置的主題系統,開發者可以輕鬆創建和定製主題,以滿足品牌需求。
- 響應式設計:支持響應式樣式,允許開發者為不同屏幕尺寸定義不同的樣式。
- 靈活的組件:包含大量預構建的組件(如按鈕、表單、模態框等),支持組合和擴展,滿足各種設計需求。
4. MUI(material-ui)
Material UI 是一個開源的 React 組件庫,基於 Google 的 Material Design 規範實現。它包含一個全面的預構建組件集合,開箱即可在生產中使用,並具有一套自定義選項,可以輕鬆地在我們的組件之上實現你自己的自定義設計系統。
主要特點
- 快速構建應用:開源社區貢獻的組件,節省開發時間。
- UI 美觀:嚴格遵循 Material Design 規範,提供美觀的 UI 組件。
- 可定製性:提供大量可定製性選項,滿足不同需求。
- 低門檻協作:降低開發門檻,促進團隊協作。
- 社區支持:MUI 擁有活躍的社區和豐富的文檔,開發者可以輕鬆找到示例、教程和解決方案。
5. NextUI
NextUI 是基於 tailwindcss 和 react aria 的一個 React 組件庫,旨在提供快速、簡潔和美觀的用户界面組件,特別適合與 Next.js 應用程序一起使用。
主要特點
- TS 支持:完全由 TypeScript 編寫的組件。
- 動畫:複雜場景的動畫基於 Framer Motion 實現。
- 現代設計:NextUI 提供了一套美觀且現代的 UI 組件,符合當今設計趨勢,能夠提升應用的視覺吸引力。
- 高性能:組件經過優化,確保在性能上表現出色,適合構建需要快速響應的應用。
- 易於使用:組件庫提供了簡單易用的 API,開發者可以快速上手,減少學習曲線。
- 主題定製:支持主題定製,開發者可以根據項目需求創建獨特的視覺風格。
- 響應式設計:內置響應式組件,確保在各種設備和屏幕尺寸下都能提供良好的用户體驗。
6. Ant Design
Ant Design 是基於 Ant Design 設計體系的 React UI 組件庫,適合企業級中後台產品與前台桌面網站。
主要特點
- 提煉自企業級中後台產品的交互語言和視覺風格。
- 開箱即用的高質量 React 組件。
- 使用 TypeScript 開發,提供完整的類型定義文件。
- 全鏈路開發和設計工具體系。
- 數十個國際化語言支持。
- 深入每個細節的主題定製能力。
7. Flowbite
Flowbite 是一個開源組件庫,使用 Tailwind CSS 實用程序類來創建組件。它提供 600 多個組件和交互元素,以及暗黑模式支持和 Figma 設計系統。它支持多種現代前端開發框架,包括 React、Vue、Svelte、Laravel 和 Rails。Flowbite 的專業版現已推出,其中包含基於 Tailwind CSS 實用程序類的 Figma 設計系統以及數百個開發的頁面和組件,例如應用程序 UI、營銷 UI 和電子商務佈局。
Flowbite 還可與 React、Vue、Angular 和 Svelte 配合使用。它還包括 Next.js、Nuxt、Gatsby、Astro、SolidJS、Remix 和 Meteor.js 等等的安裝指南。
主要特點
- 支持的組件多。
- 支持的框架多。
- 提供設計師使用的 Figma 支援。
- 提供了開源免費的 SVG 圖標庫(Flowbite SVG)。
總結
Next.js 內置了對 CSS 模塊的支持。使用 CSS 模塊,你只需要使用 .module.css 作為文件後綴名,Next.js 就會自動進行處理。而在 Next.js 生態中,大多都是基於 tailwindcss 和 CSS-in-JS 的方案實現,實現 CSS-in-JS 的庫有很多,每個庫的實現、使用方式、語法也不盡相同。目前 Next.js 客户端組件中支持使用的庫有:
- kuma-ui
- @mui/material
- pandacss
- styled-jsx
- styled-components
- style9
- tamagui
- tss-react
- vanilla-extract
上面沒有深入對某一個 CSS-in-JS 庫做剖析,而是以目前 Next.js 生態中知名度(star 數)最高的一些庫拋磚引玉。