Web Components,啟動!帶你走進 Web Components 的世界!
Web Components是W3C制定的一套規范,它允許開發者創建可復用的自定義元素,這些元素可以像普通的HTML元素一樣在DOM中使用。這些自定義元素封裝了結構、樣式和腳本,并且具有明確的接口,以便在其他Web應用中使用。
Web Components 主要包括以下部分:
- Custom Elements:允許開發者定義自己的HTML元素,這些元素具有封裝好的結構、樣式和腳本。Custom Elements的接口可以讓開發者在自定義元素上添加屬性和方法,以擴展HTML的功能。
- Shadow DOM:為自定義元素提供了一個隔離的DOM環境,使得自定義元素的樣式和腳本不會影響到其他元素。Shadow DOM使得開發者可以在自定義元素內部使用CSS和JavaScript,而不用擔心樣式沖突或腳本相互干擾的問題。
- HTML Templates:提供了一種定義自定義元素結構模板的方式。通過HTML Templates,開發者可以創建包含插槽(slot)的模板,然后在實例化自定義元素時,將內容填充到相應的插槽中。
本文就來分享九個值得使用和學習的 Web Components 開源項目,帶你走進 Web Components 的世界!
Lit
Lit 是一個基于 Web Components 標準的 JavaScript 庫,它提供了一系列的工具和 API ,使得創建高性能、動態、可重用的 Web 組件變得更加容易。Lit 的特點包括:
- 輕量級:Lit 的代碼庫非常小巧,壓縮后只有不到 10KB,這使得它使用起來非常方便,加載速度也很快。
- 編程簡潔:Lit 提供了一組簡單的 API,并且支持使用 JavaScript 模板字符串進行 HTML 的快速構建,降低組件編寫的難度。
- 可擴展性強:Lit 不僅支持原生的 Web Components 標準 API,還提供了一些自定義的組件 API,可以更加方便地實現高級功能。
- 生態豐富:Lit 社區活躍,提供了許多常用的外部庫和組件,可以幫助開發者快速搭建復雜的應用程序。
Github:https://github.com/lit/lit。
Fast Element
Fast Element 是一個基于 Web Components 標準的開源 UI 庫,由 Microsoft 出品。Fast Element 旨在提供高性能、可維護和易擴展的 Web Components,以便構建現代化 Web 應用程序。Fast Element 的特點包括:
- 簡單易用:提供了一組簡單的 API,可以使用 TypeScript 進行開發,并且支持使用 CSS 樣式進行個性化定制,使得組件開發更加容易。
- 可復用性強:提供了一些通用的組件,如按鈕、文本框等,這些組件可以直接調用或集成到其他組件中,降低了開發和維護成本。
- 樣式定制靈活:支持使用 CSS 變量進行主題定制,也支持使用 LESS 或者 Sass 進行樣式的編寫和管理,開發者可以根據自身需求自由定制樣式。
- 支持無障礙訪問:提供了高度可訪問的 UI 組件,符合 W3C 的 Web Content Accessibility Guidelines (WCAG) 標準,在無障礙環境下使用也非常友好。
Github:https://github.com/Microsoft/fast。
Stencil
Stencil是一個開源的使用TypeScript、JSX和CSS來創建符合標準的Web Components的編譯器。它結合了最流行框架的最佳概念,提供便捷的API和關鍵功能,如預渲染和對象作為屬性,使編寫快速、強大的組件變得更加簡單。Stencil還可以生成特定于框架的包裝器,以便與流行的框架直接集成使用,并提供優化的開發體驗,包括實時重載和一個小型開發服務器。
Github:https://github.com/ionic-team/stencil。
omi
omi 是騰訊出品的 Web Components 框架,內置 JSX 和信號 signal/Signal。其具有以下特點:
- 信號驅動的響應式編程:OMI框架采用信號驅動的響應式編程方式,確保用戶界面能夠準確地根據需要進行更新。這種編程方式有助于減少不必要的渲染和計算,提高應用的性能和用戶體驗。
- 完備的模板和組件:OMI框架提供了豐富的模板和組件,包括OMIU、JSX、Router、Suspense、VChart和VTable(Visactor)等。這些組件和模板都是開箱即用的,無需進行任何配置,可以大大簡化開發過程,提高開發效率。
- 面向對象編程(OOP)和數據驅動編程(DOP):OMI框架同時支持面向對象編程(OOP)和數據驅動編程(DOP)兩種編程方式。這意味著開發者可以根據項目需求選擇最適合的編程方式,靈活應對不同的開發場景。
- 可構建樣式表(Constructable Stylesheets):OMI框架支持可構建樣式表(Constructable Stylesheets),這使得樣式的管理和共享變得更加輕松。通過可構建樣式表,開發者可以更加高效地管理和維護應用的樣式。
- Web Components支持:OMI框架支持Web Components,這意味著開發者可以輕松地創建符合標準的跨框架組件。這有助于提高組件的復用性和可維護性,降低開發成本。
- 微小尺寸和極速性能:OMI框架具有微小的尺寸和極速的性能,支持所有現代瀏覽器。這得益于框架采用了先進的技術和優化手段,使得應用能夠在保持高性能的同時保持較小的體積。
Github:https://github.com/Tencent/omi。
Quark Design
Quark Design 是哈啰出品的面向 C 端的下一代前端組件庫,它可以在任意框架或無框架中使用,支撐哈啰幾乎所有 C 端 H5 項目,包括交易,支付,兩輪,商城等。這是一個設計輕盈優雅的企業級 UI 組件庫,可以滿足所有日常使用的基礎組件需求。
Quark design 是一種全新的組件庫,底層基于Web Components,不同于傳統組件框架(如Antd, Vant),需要瀏覽器中需要做大量前置工作。Quarkd則將這些工作放到構建應用程序的編譯時來處理。組件的數據更新響應由瀏覽器自身API處理,更簡單,更高效!
Github:https://github.com/hellof2e/quark-design。
Lion
Lion 是一套基于 Web Components 的組件庫,具備高性能、高可訪問性和靈活性。作為一個無偏見、可定制的白標層,Lion 提供了豐富的組件基礎,允許開發者輕松擴展和構建自己的組件層。
- 在性能方面,Lion 專注于在所有主流瀏覽器中實現卓越的性能,同時保持極低的依賴項數量,確保高效的運行和加載速度。
- 在可訪問性方面,Lion 致力于符合 WCAG 2.2 AA 標準,通過創建無障礙的組件,確保所有人都能夠輕松使用和訪問。
- 在靈活性方面,Lion 提供了基于 Web 組件和 JavaScript 類的解決方案,這些方案可以根據具體需求進行使用、采納和擴展,滿足各種場景下的需求。
- Lion 還采用了現代代碼的分發方式,以純 es 模塊的形式提供,便于集成和使用。同時,它還以最合適的形式公開函數、類和 Web 組件,方便開發者根據需求選擇和使用。
Github:https://github.com/ing-bank/lion。
Shoelace
Shoelace 是一個具有前瞻性的基于 Web Components 的 UI 組件庫。它具有以下特點:
- 兼容所有框架
- 兼容CDN
- 可通過CSS完全自定義
- 包含深色主題
- 以無障礙性為設計核心
- 提供一流的React支持
- 內置本地化功能
Github:https://github.com/shoelace-style/shoelace。
UI5 Web Components
UI5 Web Components 是 SAP UI5 框架的一部分,它是一個開源的 Web 組件庫,用于構建現代的 Web 應用。UI5 Web Components 提供了一系列的可復用的 UI 組件,如按鈕、輸入框、表格等,這些組件都是基于 Web 標準的自定義元素和 Shadow DOM 技術實現的。這意味著可以在任何支持這些 Web 標準的環境中使用這些組件,如 Angular、React、Vue 等。
Github:https://github.com/SAP/ui5-webcomponents。
Awesome Web Components
一系列 Web Components 學習資源,包含文章、案例、框架、庫、生態系統、圖書等。
Github:https://github.com/web-padawan/awesome-web-components。