当前位置: 首页 > Web前端 > HTML

WebComponents入门指南

时间:2023-04-02 17:51:47 HTML

今天的前端开发基本离不开React和Vue的支持,很多自定义组件库都衍生自这两个框架:Element(Vue)AntDesign(React)这些的出现组件库让我们可以直接使用封装好的组件,并且在开源社区的帮助下,出现了很多模板项目(vue-element-admin,AntDesignPro),让我们可以快速入手一个item。React和Vue虽然为我们的组件开发提供了便利,但是在组件开发思路上,一是自创的JSX语法,二是特有的单文件模板语法。两者的目标都是为组件提供一种封装方式。毕竟里面有原创的东西,和我们刚开始接触的Web基础的HTML、CSS、JS方法还是有一些区别的。今天要介绍的是通过HTML、CSS、JS实现自定义组件,也是目前浏览器原生提供的解决方案:WebComponents。什么是Web组件?WebComponents本身并不是一个单独的规范,而是一组DOMAPI和HTML规范,用于创建具有自定义名称的可重用HTML标签,可以直接在您的Web应用程序中使用。代码重用一直是我们的目标。在JS中,我们可以将可复用的代码封装成一个函数,但是对于复杂的HTML(包括相关的样式和交互逻辑),我们从来没有更好的复用方式。要么使用后端模板引擎,要么使用现有的框架重新封装DOMAPI,而WebComponents的出现就是为了补充浏览器在这方面的能力。如何使用Web组件?WebComponents中包含的几个规范已经在W3C和HTML标准中进行了标准化,主要由三部分组成:自定义元素(customelements):一组用于创建自定义HTML标签的JavaScriptAPI,以及允许在创建标签时进行一些操作或销毁;ShadowDOM(影子DOM):一组用于将创建的DOMTree插入到现有元素中的JavaScriptAPI,并且DOMTree不能被外部修改,所以不用担心元素被其他Local影响操作;HTML模板(HTMLtemplates):直接通过在JS中,我们可以模板的实例是直接通过DOMAPI获取的。获取实例后,不能直接修改模板中的元素。相反,必须调用tpl.content.cloneNode来制作副本,因为页面上的模板不是一次性的。还应参考其他组件。//通过ID获取标签consttplElem=document.getElementById('helloUserTpl');constcontent=tplElem.content.cloneNode(true);当我们得到复制的模板后,我们可以对模板进行一些操作,然后将其插入到ShadowDOM中。添加样式其中:主机伪类是用于定义shadow-root的样式,即包裹这个模板的标签的样式。Placeholderelement占位符元素是先在模板中的某个位置占据一个位置,然后指定该元素插入到界面时该位置应该显示什么。用户名

##欢迎关注公众号:更神奇的前端

这里的用法和Vue的slot用法一样,就不过多介绍了。综上所述,WebComponents的基本用法介绍到这里就差不多了。与其他支持组件化方案的框架相比,使用WebComponents有以下优势:原生浏览器支持,无需引入额外的第三方库;真正内部私有化的CSS,不会造成样式冲突;无需编译即可实现,与外部DOM隔离的组件化方案;WebComponents的主要缺点是标准可能还不稳定,例如文章中没有提到模板的模块化方案已经被废除,也没有正式的方案引入模板文件。而且,虽然可以使用nativeAPI,但是并不好用,不然就没有jQuery这样的库来操作DOM了。幸运的是,现在也有很多基于WebComponents实现的框架。后面会开篇文章讲一下使用WebComponents的框架lit-html和lit-element。好了,今天的文章就到这里,希望大家有所收获。