>換句話說,X-TAG是Microsoft對Google的聚合物是什麼。他們倆唯一常見的是基礎多填充,它可以支持非支撐瀏覽器中的Web組件。
是的,但是現在不再是。經過一番挖掘,我設法發現X-Tag項目的原始開發人員Daniel Buchner曾在Mozilla創建圖書館時在Mozilla工作。但是從那以後,他搬到了微軟並繼續該項目。此外,他是前莫濟式的幫助,是圖書館的唯一貢獻者。因此,它現在是一個由前莫油創立的Microsoft支持的項目。x-tag與聚合物有何不同? 聚合物將所有四種Web組件技術組合在一起,即HTML導入,自定義元素,Shadow DOM和HTML模板中的單個軟件包。它為開發人員提供了易於使用的API,用於構建自定義Web組件。另一方面,X-TAG僅提供自定義元素API來構建自定義Web組件。當然,您還可以與X-Tag庫一起使用其他Web組件API。
> Mozilla項目不是X-Tag嗎?
>
>在本文中,我們將使用X-TAG庫構建自定義元素,以使用以下標記嵌入Google Map Street視圖:
<span><span><span><google-map</span> latitude<span>="40.7553231"</span> longitude<span>="-73.9752458"</span>></span><span><span></google-map</span>></span></span>
。
讓我們首先在我們的文檔的中包括x-tag javaScript庫。
<span><span><!DOCTYPE html></span> </span><span><span><span><html</span>></span> </span> <span><span><span><head</span>></span> </span> <span><!-- X-Tag library including the polyfill --> </span> <span><span><span><script</span> src<span>="https://rawgit.com/x-tag/core/master/dist/x-tag-core.min.js"</span>></span><span><span></script</span>></span> </span> <span><span><span></head</span>></span> </span> <span><span><span><body</span>></span> </span> <span><!-- Custom element markup will appear here --> </span> <span><span><span><script</span>></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></script</span>></span> </span> <span><span><span></body</span>></span> </span><span><span><span></html</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>
<span><span><span><google-map</span> latitude<span>="40.7553231"</span> longitude<span>="-73.9752458"</span>></span><span><span></google-map</span>></span></span>
>上面的代碼有效,但我們需要擺脫iframe.src中的硬編碼坐標值,而是直接從自定義元素屬性來源。為此,我們將利用登錄對象,其中屬性名稱構成密鑰。我們通過聲明屬性來將它們與HTML屬性鏈接:{}。
然後,我們可以在指定SRC URL時直接使用這些變量:<span><span><!DOCTYPE html></span> </span><span><span><span><html</span>></span> </span> <span><span><span><head</span>></span> </span> <span><!-- X-Tag library including the polyfill --> </span> <span><span><span><script</span> src<span>="https://rawgit.com/x-tag/core/master/dist/x-tag-core.min.js"</span>></span><span><span></script</span>></span> </span> <span><span><span></head</span>></span> </span> <span><span><span><body</span>></span> </span> <span><!-- Custom element markup will appear here --> </span> <span><span><span><script</span>></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></script</span>></span> </span> <span><span><span></body</span>></span> </span><span><span><span></html</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>
使用自定義元素現在很簡單,就像在
中包括以下標記:https://www.google.com/maps/embed/v1/streetview?key=<span><span><span><API_KEY</span>></span>&location=<span><span><LATITUDE</span>></span>,<span><span><LONGITUDE</span>></span></span>
>
>請參閱codepen上的sitepoint(@sitepoint)的pen x-tag<span>// Insert your API key here </span><span>var 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,為什麼在Web開發中很重要?
> x-tag與其他Web組件庫有何不同?
> lifeCycle:{
}
}
});
> x-tag中的生命週期方法是什麼?生命週期方法是在自定義元素生活的不同階段被調用的特殊方法。 X-TAG支持四種生命週期方法:創建,插入,刪除和屬性。這些方法允許您在創建元素,添加到DOM,從DOM中刪除或其中一個屬性更改時執行特定的操作。
>
如何使用X-TAG處理事件? >
X-TAG提供了一種處理自定義元素事件的簡單方法。註冊元素時,您可以在事件對像中定義事件處理程序。例如,要處理單擊事件,您將執行類似的操作:
}
}
我可以使用x-tag創建shadow dom元素?
是的,x-tag支持陰影元素的創建。這使您可以封裝元素的樣式和標記,使其與文檔的其餘部分分開。要創建陰影根,您可以在元素創建的生命週期方法內使用this.createshadowroot()方法。
我如何樣式我的自定義元素?
您只需樣式的自定義元素像其他任何HTML元素一樣,使用CSS。如果您的元素使用Shadow dom,則可以在陰影根內包含一個
> > > > > > > >>
X-TAG無法積極維護X-TAG 。最後一個版本是在2017年。但是,圖書館穩定,仍然可以在項目中使用。如果您遇到任何問題或需要新功能,則可能需要自己實現它們或考慮使用其他庫。以上是用X-TAG構建自定義的Web組件的詳細內容。更多資訊請關注PHP中文網其他相關文章!