>换句话说,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中文网其他相关文章!