搜尋
首頁web前端css教學Web組件庫上的一點

A Bit on Web Component Libraries

近期湧現了不少關於Web Components的新聞,我將它們整理在此。

我認為Web Components最棒的應用場景之一是模式庫。與其像Bootstrap那樣使用<div>,或像Bulma那樣使用<code><div>,不如使用自定義元素,例如<code><designsystem-tabs></designsystem-tabs>。新的Shoelace庫使用sl命名空間來定義其組件。它是一個完全基於Web Components的模式庫,其中的標籤是<sl-tab-group></sl-tab-group>元素。

這樣做有什麼好處呢?首先,它引入了組件模型。這意味著,如果您正在處理一個組件,它將擁有一個模板和一個與其位置相關的樣式表。查看Shoelace的內部實現,您可以看到這一切都基於Stencil。

另一個好處是,組件可以使用(並且確實使用了)Shadow DOM。這提供了一種直接來自Web平台的隔離機制。對於我們這些CSS開發者來說,這意味著標籤組件中標籤的樣式是使用.tab類完成的(哇,太酷了!),但它在該組件中是隔離的。即使使用這麼通用的名稱,我也不會意外地影響頁面上使用該通用類的其他組件,也不會有一些外部CSS來干擾這裡的內部結構。 Shadow DOM就像一道安全牆,防止樣式洩漏或滲入。

我還看到了FAST框架¹,它也是一組組件。它的標籤被定義為<fast-tabs></fast-tabs>。這讓我想到Web Components作為模式庫方法的另一個優點:它感覺像是API驅動的,甚至從組件本身的名稱開始,這實際上就是你在HTML中使用的。該元素上的屬性可以完全自定義。新興的標準似乎是,您甚至不必為自定義的屬性添加data-前綴。因此,如果我要製作一個標籤組件,它可能是<chris-tabs active-tab="lunch" variation="rounded"></chris-tabs>

也許使用Web Components作為模式庫的最大參與者是Ionic。它們的標籤是<ion-tabs></ion-tabs>,您可以使用它們而無需涉及任何其他框架(儘管它們除了自己的Stencil之外,還支持Angular、React和Vue)。 Ionic在Web Components方面取得了很大的進步,最近支持了Shadow Parts。以下是Brandy Carney再次解釋封裝的說明:

Shadow DOM有助於防止樣式從組件中洩漏並意外應用於其他元素。例如,我們將.buttonclass分配給我們的<ion-button></ion-button>組件。如果Ionic Framework用戶在其自己的元素之一上設置.button類,則在框架的早期版本中,它將繼承Ionic按鈕樣式。由於<ion-button></ion-button>現在是一個Shadow Web Component,所以這個問題不再存在。

但是,由於這種封裝,樣式也無法滲透到Shadow組件的內部元素中。這意味著,如果Shadow組件在其shadow tree中呈現元素,用戶就無法使用他們的CSS來定位內部元素。

封裝是一件好事,但它確實使樣式變得“更難”(故意如此)。有一個重要的CSS概念需要了解: CSS自定義屬性可以穿透Shadow DOM 。但是,人們決定——我認為這是正確的——在一個設計系統中將每一件事都“變量化”並不是一個明智的做法。相反,他們為Shadow DOM內的每個HTML片段賦予一個部分,例如<div part="icon">,這使我們能夠使用CSS“從外部訪問”,例如<code>custom-component::part(icon) { } 。我認為基於部分的樣式鉤子大部分是不錯的,並且對於這樣的模式庫來說是一種明智的方案,但我承認它的一部分讓我感到困擾。選擇器的工作方式與您預期的不一樣。例如,您無法有條件地選擇內容。您也不能選擇子元素或使用級聯。換句話說,它只是一個一次性的,或者就像您用手直接穿過薄膜一樣。您可以向前伸出手抓住東西或不抓住,但您什麼也做不了。

說到讓人生氣的事情,Andrea Giammarchi對Web Components的現狀有一個很好的觀點:

每個開始使用的庫,包括我的庫,都建議我們應該導入該庫來定義所謂的“可移植的自定義元素”。

Google總是建議使用LitElement。 Microsoft希望您使用FASTElement。 Stencil有自己的組件。 hyperHTML有自己的組件。沒有人只使用“原始”的Web Components。這很奇怪!我認為最糟糕的部分是,Web Components應該是一個“原生平台”的東西,這意味著我們不應該需要依賴某種特定技術才能使用它們。當我們這樣做時,我們就像使用React或其他任何東西一樣被鎖定到它上面。

Andrea在文章中提出了一些想法,包括使用一些新的更小的庫。我認為我想看到的是一個根本不使用任何庫的模式庫。

  1. FAST在首頁的連續句子中將自己稱為“界面系統”,然後是“UI框架”。 Shoelaces稱自己為“庫”,但我稱之為“模式庫”。我認為“設計系統”是描述這個概念最常用的術語,但通常比特定技術更廣泛。 FAST在代碼本身中使用該術語來表示控制主題的包裝器元素。我認為圍繞所有這些東西的術語遠未確定。

以上是Web組件庫上的一點的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
將包裹用作捆綁器進行反應應用將包裹用作捆綁器進行反應應用Apr 21, 2025 am 10:59 AM

您可能已經熟悉項目上資產管理的WebPack。但是,還有另一個名為包裹的工具,與

目前閱讀:Jason Grigsby的Progressive Web應用程序目前閱讀:Jason Grigsby的Progressive Web應用程序Apr 21, 2025 am 10:42 AM

上週,我一直在閱讀Jason Grigsby關於進步網絡應用程序的新書,這很令人興奮。傑森(Jason)解釋了什麼是PWA以及它們的工作方式

那個時候我嘗試在沒有CSS的情況下瀏覽網絡那個時候我嘗試在沒有CSS的情況下瀏覽網絡Apr 21, 2025 am 10:38 AM

CSS是賦予每個網站設計的原因。沒有它,網站肯定不是很有趣和友好!我已經讀過一個星期沒有JavaScript的人

為您的會議創建多樣性獎學金計劃為您的會議創建多樣性獎學金計劃Apr 21, 2025 am 10:34 AM

我和我的合作夥伴經營了一家設計與開發會議公司八年。在此期間,我們進行了數百小時的會議,兩者都在現場

採訪技術職位並不是一定很恐怖採訪技術職位並不是一定很恐怖Apr 21, 2025 am 10:33 AM

Jacob Schatz(@JakeCodes)是Gitlab的一名員工工程師,很友好,可以分享他如何進行技術職位和他的工作面試

分組HTML課程可以使它們更可讀嗎?分組HTML課程可以使它們更可讀嗎?Apr 21, 2025 am 10:32 AM

您可以在HTML元素上有多個類:

簡化事件處理程序背後的思考簡化事件處理程序背後的思考Apr 21, 2025 am 10:31 AM

當用戶單擊某個地方,專注於帶有鍵盤的鏈接並以表單更改文本時,將使用事件響應。當我剛開始學習時

發送電子郵件的NetLify功能發送電子郵件的NetLify功能Apr 21, 2025 am 10:27 AM

讓我們說您搖滾jamstack風格的網站(沒有使用服務器端語言),但是您想做一些動態的事情,例如發送電子郵件。不是

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器