搜尋
首頁web前端css教學用X-TAG構建自定義的Web組件

Building Custom Web Components with X-Tag

用X-TAG構建自定義的Web組件

鑰匙要點

    Microsoft支持的JavaScript庫
  • X-TAG提供了一個緊湊的,功能豐富的接口,用於快速Web組件開發,主要關注自定義元素API。
  • > X-TAG最初是一個Mozilla項目,但現在是一個Microsoft支持的項目,類似於Google支持聚合物框架。 使用XTAG.REGISTER()方法,使用X-TAG創建自定義元素是完全由JavaScript驅動的。此過程涉及定義自定義元素的生命週期,訪問者,方法和事件。
  • > 與聚合物相比,
  • X-TAG提供了更簡單的API用於實現自定義元素,這是旨在保持其設置輕巧靈活的開發人員的合適選擇。但是,它沒有提供聚合物具有的複雜功能。
  • >
  • 在Google和Mozilla的Web組件解決方案之後,現在輪到Microsoft通過公開發布X-TAG庫進入此空間了。官方網站將其定義如下:
> X-TAG是一個由Microsoft支持的開源,JavaScript庫,它包裝了W3C標準Web組件API家族,以提供一個緊湊的,功能豐富的界面,用於快速組件開發。 X-TAG為所有Web組件API(自定義元素,陰影DOM,模板和HTML Imports)提供功能掛鉤,但它僅需要自定義元素支持才能操作。在沒有本機自定義元素支持的情況下,X-TAG使用一組與Google聚合物框架共享的多填充。

>換句話說,X-TAG是Microsoft對Google的聚合物是什麼。他們倆唯一常見的是基礎多填充,它可以支持非支撐瀏覽器中的Web組件。

x-tag與聚合物有何不同? 聚合物將所有四種Web組件技術組合在一起,即HTML導入,自定義元素,Shadow DOM和HTML模板中的單個軟件包。它為開發人員提供了易於使用的API,用於構建自定義Web組件。另一方面,X-TAG僅提供自定義元素API來構建自定義Web組件。當然,您還可以與X-Tag庫一起使用其他Web組件API。

> Mozilla項目不是X-Tag嗎?
是的,但是現在不再是。經過一番挖掘,我設法發現X-Tag項目的原始開發人員Daniel Buchner曾在Mozilla創建圖書館時在Mozilla工作。但是從那以後,他搬到了微軟並繼續該項目。此外,他是前莫濟式的幫助,是圖書館的唯一貢獻者。因此,它現在是一個由前莫油創立的Microsoft支持的項目。

>

開始使用X-Tag

開始

>在本文中,我們將使用X-TAG庫構建自定義元素,以使用以下標記嵌入Google Map Street視圖:

<span><span><span><google-map> latitude<span>="40.7553231"</span> longitude<span>="-73.9752458"</span>></google-map></span><span><span></span>></span></span></span>
自定義元素將具有兩個屬性,即緯度和經度,以指定位置的坐標。由於這些屬性是可選的,因此我們還將為每個屬性分配每個屬性,以防開發人員未能在標記中定義它們。

讓我們首先在我們的文檔的中包括x-tag javaScript庫。

<span><span>
</span><span><span><span>></span>
</span>  <span><span><span>></span>
</span>    <span><!-- X-Tag library including the polyfill -->
</span>    <span><span><span><script> src<span >="https://rawgit.com/x-tag/core/master/dist/x-tag-core.min.js"</script></span>></span><span><span></span>></span>
</span>  <span><span><span></span>></span>
</span>  <span><span><span>></span>
</span>    <span><!-- Custom element markup will appear here -->
</span>    
    <span><span><span><script>></script></span><span>
</span></span><span><span>      <span><!-- The behavior of the custom element will be defined here -->
</span></span></span><span><span>    </span><span><span></span>></span>
</span>  <span><span><span></span>></span>
</span><span><span><span></span>></span></span></span></span></span></span></span>
>在文檔的中包括x-tag庫很重要。這樣就可以在渲染引擎遇到我們將在內使用的自定義元素標記之前完全下載和解析。

定義自定義元素
與聚合物不同,用X-TAG創建自定義元素的過程完全由JavaScript驅動。 X-TAG庫提供了許多有用的方法,回調和屬性,以定義我們元素的自定義行為。一個用於創建具有X標籤的自定義元素的典型骨架,如下所示:

register() - 這是庫中最重要的方法。它接受自定義元素的名稱為第一個參數,然後是對象定義。顧名思義,這負責在DOM。

內容 - 通常,自定義元素可能需要一些其他標記來進行結構或演示。這接受HTML字符串或多行注字符串,將標記註入DOM。
xtag<span>.register('google-map', {
</span>
  <span>content: '',
</span>
  <span>lifecycle: {
</span>    <span>created  : function(){ 
</span>      <span>/* Called when the custom element is created */ 
</span>    <span>},
</span>    <span>inserted : function(){ 
</span>      <span>/* Called when the custom element is inserted into the DOM */ 
</span>    <span>},
</span>    <span>removed  : function(){ 
</span>      <span>/* Called when the custom element is removed from the DOM */ 
</span>    <span>},
</span>    <span>attributeChanged: function(attrName<span>, oldValue, newValue</span>){
</span>      <span>/* Called when the attribute of the custom element is changed */
</span>    <span>}
</span>  <span>},
</span>
  <span>accessors : {},
</span>  <span>methods   : {},
</span>  <span>events    : {}
</span><span>});</span>
>生命週期 - 這包含有用的回調方法,旨在針對自定義元素的生命週期中的不同階段。
  • 配件 - 這為訪問對象屬性,設置器和getters提供了一個常見的接口,並將它們與相應的HTML屬性鏈接在一起。當屬性鏈接到getter/setter時,它們的狀態始終保持同步。
  • >
  • 方法 - 自定義元素可能需要一些自己的獨特方法來提供所需的功能。只需將方法對象添加到頂級XTAG.REGISTER()定義對象,然後在其中包含所有用戶定義的方法。
  • >事件 - 這是負責將事件附加到自定義元素的原因。該對象的鍵是您希望附加到自定義元素(例如TAP,focus等)的事件的名稱。
  • >
  • 基本思想是使用iframe嵌入Google地圖,並以以下格式指定SRC URL:
  • 獲得API_KEY,請按照此處描述的步驟操作。擁有api_key後,我們將在生命週期對象的創建回調方法中創建一個iframe,並以上述格式指定SRC屬性。
  • >
    <span><span><span><google-map> latitude<span>="40.7553231"</span> longitude<span>="-73.9752458"</span>></google-map></span><span><span></span></span></span></span>
>

>上面的代碼有效,但我們需要擺脫iframe.src中的硬編碼坐標值,而是直接從自定義元素屬性來源。為此,我們將利用登錄對象,其中屬性名稱構成密鑰。我們通過聲明屬性來將它們與HTML屬性鏈接:{}。

然後,我們可以在指定SRC URL時直接使用這些變量:
<span><span>
</span><span><span><span>></span>
</span>  <span><span><span>></span>
</span>    <span><!-- X-Tag library including the polyfill -->
</span>    <span><span><span><script> src<span >="https://rawgit.com/x-tag/core/master/dist/x-tag-core.min.js"</script></span>></span><span><span></span>></span>
</span>  <span><span><span></span>></span>
</span>  <span><span><span>></span>
</span>    <span><!-- Custom element markup will appear here -->
</span>    
    <span><span><span><script>></script></span><span>
</span></span><span><span>      <span><!-- The behavior of the custom element will be defined here -->
</span></span></span><span><span>    </span><span><span></span>></span>
</span>  <span><span><span></span>></span>
</span><span><span><span></span>></span></span></span></span></span></span></span>

應用修飾觸摸

xtag<span>.register('google-map', {
</span>
  <span>content: '',
</span>
  <span>lifecycle: {
</span>    <span>created  : function(){ 
</span>      <span>/* Called when the custom element is created */ 
</span>    <span>},
</span>    <span>inserted : function(){ 
</span>      <span>/* Called when the custom element is inserted into the DOM */ 
</span>    <span>},
</span>    <span>removed  : function(){ 
</span>      <span>/* Called when the custom element is removed from the DOM */ 
</span>    <span>},
</span>    <span>attributeChanged: function(attrName<span>, oldValue, newValue</span>){
</span>      <span>/* Called when the attribute of the custom element is changed */
</span>    <span>}
</span>  <span>},
</span>
  <span>accessors : {},
</span>  <span>methods   : {},
</span>  <span>events    : {}
</span><span>});</span>
造型自定義元素類似於造型任何其他HTML標籤。類,ID和屬性選擇器與自定義元素一起按預期工作。例如,我們將在新創建的自定義元素中添加一個盒子陰影和邊界 - 拉迪烏斯。

>

使用自定義元素現在很簡單,就像在

中包括以下標記:
https://www.google.com/maps/embed/v1/streetview?key=<span><span><span><api_key>></api_key></span>&location=<span><span><latitude>></latitude></span>,<span><span><longitude>></longitude></span></span></span></span></span>
最終結果在下面的Codepen中可見:

>

>請參閱codepen上的sitepoint(@sitepoint)的pen x-tag
<span>// Insert your API key here
</span><span>var API_KEY = <api_key>;
</api_key></span>
xtag<span>.register('google-map', {
</span>  <span>lifecycle: {
</span>    <span>created: function() { 
</span>      <span>var iframe = document.createElement('iframe');
</span>      iframe<span>.width = 600;
</span>      iframe<span>.height = 600;
</span>      iframe<span>.frameBorder = 0;
</span>      iframe<span>.src = 'https://www.google.com/maps/embed/v1/streetview?key=' + 
</span>                    <span>API_KEY + '&location=40.7553231,35.3434';
</span>      <span>this.appendChild(iframe);
</span>    <span>}
</span>  <span>}
</span><span>});</span>
自定義元素。

>儘管瀏覽器對Web組件的支持有點粗略,但是我們使用X-TAG庫與Polyfill的演示應該在包括IE9及以上在內的所有現代瀏覽器上使用。 最終想法 與聚合物相比,X-TAG提供了更簡單的API來理解和實現自定義元素,這主要是由於聚合物缺乏複雜的功能。如果您打算保持設置輕巧和靈活,並且對其他Web組件API沒有好的用例,那麼X-TAG肯定是該工作的合適候選人。 經常詢問的問題(常見問題解答)有關使用x-tag 構建自定義Web組件的問題

什麼是x-tag,為什麼在Web開發中很重要?

x-tag是一個小的JavaScript庫,可以簡化自定義,可重複使用的HTML元素的創建。它是Web組件套件的一部分,其中還包括陰影DOM,HTML模板和自定義元素。 X-TAG在Web開發中很重要,因為它允許開發人員創建自己的HTML元素,封裝其代碼並保持其代碼庫清潔和可維護。它還促進了代碼重用,它可以大大加快開發過程。

> x-tag與其他Web組件庫有何不同?

x-tag是獨一無二的,它的簡單性和易於使用。與其他圖書館不同,X-Tag不需要任何構建步驟或轉介,而且足跡很小。它還具有簡單,直觀的API,可以輕鬆定義自定義元素及其行為。此外,X-TAG與所有現代瀏覽器兼容,可以與其他庫和框架一起使用。

>我可以與其他JavaScript庫或框架一起使用X-TAG?它不會施加任何限製或特定的架構模式,因此您可以輕鬆地將其集成到現有項目中。無論您是使用jQuery,React,Angular還是Vue.js,都可以使用X-TAG創建可以在您的應用程序中重複使用的自定義元素。

>如何使用X-定義自定義元素標籤?

用X-TAG定義自定義元素很簡單。您只需調用XTAG.REGISTER函數,以自定義元素的名稱和定義其行為的對像傳遞。該對象可以包括生命週期方法,登錄器和事件處理程序。這是一個基本示例:

XTAG.REGISTER('my-element',{

> lifeCycle:{ create:function:function(){ this.textContent ='hello ,world!'' ;
}
}
});

> x-tag中的生命週期方法是什麼?生命週期方法是在自定義元素生活的不同階段被調用的特殊方法。 X-TAG支持四種生命週期方法:創建,插入,刪除和屬性。這些方法允許您在創建元素,添加到DOM,從DOM中刪除或其中一個屬性更改時執行特定的操作。
>
如何使用X-TAG處理事件? >
X-TAG提供了一種處理自定義元素事件的簡單方法。註冊元素時,您可以在事件對像中定義事件處理程序。例如,要處理單擊事件,您將執行類似的操作:

xtag.register('my-element',{

evest:{ 🎜> console.log('element clicked!');

}

}

});


我可以使用x-tag創建shadow dom元素?

是的,x-tag支持陰影元素的創建。這使您可以封裝元素的樣式和標記,使其與文檔的其餘部分分開。要創建陰影根,您可以在元素創建的生命週期方法內使用this.createshadowroot()方法。

我如何樣式我的自定義元素?

您只需樣式的自定義元素像其他任何HTML元素一樣,使用CSS。如果您的元素使用Shadow dom,則可以在陰影根內包含一個

>我可以使用X-tag創建自定義表單元素嗎?

是的,是的,x-tag可以是用於創建自定義表單元素。但是,請記住,默認情況下,自定義表單元素不會參與表單提交或約束驗證。您將需要為這些功能提供自己的邏輯。

> x-tag是否仍維護和支持?

> > > > > > > >>

X-TAG無法積極維護X-TAG 。最後一個版本是在2017年。但是,圖書館穩定,仍然可以在項目中使用。如果您遇到任何問題或需要新功能,則可能需要自己實現它們或考慮使用其他庫。

以上是用X-TAG構建自定義的Web組件的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
使用頁面CMS進行靜態站點內容管理使用頁面CMS進行靜態站點內容管理May 13, 2025 am 09:24 AM

我知道,我知道:有大量的內容管理系統選項可用,而我進行了幾個測試,但實際上沒有一個是一個,y&#039;知道嗎?怪異的定價模型,艱難的自定義,有些甚至最終成為整個&

鏈接HTML中CSS文件的最終指南鏈接HTML中CSS文件的最終指南May 13, 2025 am 12:02 AM

鏈接CSS文件到HTML可以通過在HTML的部分使用元素實現。 1)使用標籤鏈接本地CSS文件。 2)多個CSS文件可通過添加多個標籤實現。 3)外部CSS文件使用絕對URL鏈接,如。 4)確保正確使用文件路徑和CSS文件加載順序,優化性能可使用CSS預處理器合併文件。

CSS Flexbox與網格:全面評論CSS Flexbox與網格:全面評論May 12, 2025 am 12:01 AM

選擇Flexbox還是Grid取決於佈局需求:1)Flexbox適用於一維佈局,如導航欄;2)Grid適合二維佈局,如雜誌式佈局。兩者在項目中可結合使用,提升佈局效果。

如何包括CSS文件:方法和最佳實踐如何包括CSS文件:方法和最佳實踐May 11, 2025 am 12:02 AM

包含CSS文件的最佳方法是使用標籤在HTML的部分引入外部CSS文件。 1.使用標籤引入外部CSS文件,如。 2.對於小型調整,可以使用內聯CSS,但應謹慎使用。 3.大型項目可使用CSS預處理器如Sass或Less,通過@import導入其他CSS文件。 4.為了性能,應合併CSS文件並使用CDN,同時使用工具如CSSNano進行壓縮。

Flexbox vs Grid:我應該學習兩者嗎?Flexbox vs Grid:我應該學習兩者嗎?May 10, 2025 am 12:01 AM

是的,youshouldlearnbothflexboxandgrid.1)flexboxisidealforone-demensional,flexiblelayoutslikenavigationmenus.2)gridexcelstcelsintwo-dimensional,confffferDesignssignssuchasmagagazineLayouts.3)blosebothenHancesSunHanceSlineHancesLayOutflexibilitibilitibilitibilitibilityAnderibilitibilityAndresponScormentilial anderingStruction

軌道力學(或我如何優化CSS KeyFrames動畫)軌道力學(或我如何優化CSS KeyFrames動畫)May 09, 2025 am 09:57 AM

重構自己的代碼看起來是什麼樣的?約翰·瑞亞(John Rhea)挑選了他寫的一個舊的CSS動畫,並介紹了優化它的思維過程。

CSS動畫:很難創建它們嗎?CSS動畫:很難創建它們嗎?May 09, 2025 am 12:03 AM

CSSanimationsarenotinherentlyhardbutrequirepracticeandunderstandingofCSSpropertiesandtimingfunctions.1)Startwithsimpleanimationslikescalingabuttononhoverusingkeyframes.2)Useeasingfunctionslikecubic-bezierfornaturaleffects,suchasabounceanimation.3)For

@KeyFrames CSS:最常用的技巧@KeyFrames CSS:最常用的技巧May 08, 2025 am 12:13 AM

@keyframesispopularduetoitsversatoryand and powerincreatingsmoothcsssanimations.keytricksinclude:1)definingsmoothtransitionsbetnestates,2)使用AnimatingMultatingMultationMultationProperPertiessimultane,3)使用使用4)使用BombingeNtibalibility,4)使用CombanningWiThjavoFofofofoftofofo

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伺服器。請查看我們的演示和託管服務。

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

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

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

PhpStorm Mac 版本

PhpStorm Mac 版本

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