> 文章列表 > Web Components 技术分析

Web Components 技术分析

Web Components 技术分析

简括:

Web Components 基于四个主要的规范: Custom Elements,Shadow DOM,HTML Templates 和 HTML Imports。

Custom Elements 可以让开发人员创建自定义的 HTML 标签。

 Shadow DOM 可以让开发人员将样式和行为封装到自定义元素内部,并且不影响其周围的 Web 页面。

HTML Templates 可以存储 HTML 片段,以便在需要时引用。

HTML Imports 则允许开发人员以模块化的方式组织和导入 Custom Elements 和 HTML Templates。

Custom Elements 和  Shadow DOM 是 最重要的两个API(规范),也是micro-app 和 wujie 的底层实现逻辑。 

micro-app 主要依靠 (web Component 和 proxy 实现)

下面有一个代码,体现了这两个重要的API如何使用: 

1、const shadowRoot = this.attachShadow({ mode: 'open' });       attachShadow:创建了一个shadowDOM ,它通过使用 Shadow DOM,将组件的样式和行为封装在一个“封闭”的子树中。

2、customElements.define('my-element', MyElement);                  customElements.define() 方法,将 MyElement 类注册为自定义元素

// 以下是一个示例代码:<template id="my-element-template"><style>:host {background-color: lightblue;display: block;padding: 20px;border-radius: 5px;}</style><div><h1>Hello, World!</h1><p>This is my custom element.</p></div>
</template><script>class MyElement extends HTMLElement {constructor() {super();const template = document.getElementById('my-element-template');const templateContent = template.content.cloneNode(true);const shadowRoot = this.attachShadow({ mode: 'open' });shadowRoot.appendChild(templateContent);}}customElements.define('my-element', MyElement);
</script>
```在这个示例中,我们定义了一个 MyElement 类,这个类是一个自定义元素,它通过使用 Shadow DOM,将组件的样式和行为封装在一个“封闭”的子树中。在构造函数中,我们通过使用 template 和 cloneNode 方法,将 Shadow DOM 填充为组件的内容。最后,我们通过调用 customElements.define() 方法,将 MyElement 类注册为自定义元素,从而可以在页面中使用它。

shadow DOM 树展示图: 

MDN例子: