在Web开发组件化的今天,React、Angular、Vue等主流框架都支持组件化开发。WebComponents的出现使得浏览器能够原生支持基于组件的开发。目前对WebComponents的支持程度如下:通过WebComponents,我们可以封装自己的html、js、css而不用担心影响其他页面。下面展示如何通过自定义文件上传按钮创建一个WebComponents。1.创建WebComponents首先,我们需要定义一个类,继承自HtmlElement。//定义网络组件类MyFileInputextendsHTMLElement{constructor(){super();consttemplate=document.getElementById('myFileInputTemplate');consttemplateContent=template.content;//该方法将ShadowDOM挂载到指定元素,并返回其ShadowRoot。//open指定封装方式为open。//closed指定为封闭的封装方式。//如果您将Shadow根添加到自定义元素//并将模式设置为关闭,则无法从外部访问ShadowDOM-myCustomElem.shadowRoot将返回null。this.attachShadow({mode:'open'}).appendChild(templateContent.cloneNode(true));}}在构造函数中获取自定义元素的模板内容,并为该元素挂载ShadowDOM。同时将模板内容添加到ShadowDOM中。定义完元素后,我们需要先注册自定义元素,然后才能使用。元素通过window.customElements.define注册,该方法的一个参数可以指定元素的标签名。//注册webcomponnetwindow.customElements.define('my-file-input',MyFileInput);然后可以按以下方式使用自定义元素:
