前端应该知道Web Components

看到这个标题可能有的小伙伴想到的是ReactVue 或者 Angular 的自定义组件,no no no!

Web Components 是一套不同的技术,允许您创建可重用的定制元素(它们的功能封装在您的代码之外)并且在您的web应用中使用它们。

一、流行组件库现状

前端目前比较主流的框架有 reactvuejsangular 等。

我们通常去搭建组件库的时候都是基于某一种框架去搭建, 比如 ant-design 是基于 react 搭建的 UI 组件库,而 elementUI 则是基于 vuejs 搭建的组件库。虽然目前社区有相关工具,提供框架之间的转化服务,比如讲 vuejs 组件转化为 react 组件。 但是毕竟是不同的框架,有不同的标准。因此框架api发生变动,那么你就需要重写转化逻辑, 显然是不灵活的。

那么有没有更好的方案,一次编写,到处使用呢?

答案就是 Web Components,一起去看看是什么吧!

二、什么是web-component

Web Components 是允许我们创建可重用的定制元素(即组件)的一种技术,可以在你喜欢的任何地方重用,不必担心代码冲突,本质就是组件化。由于web components是由w3c组织去推动的,因此它很有可能在不久的将来成为浏览器的一个标配。

Web Components 主要有下面四部分组成:

  • Custom elements(自定义元素):一组JavaScript API,允许您定义custom elements及其行为,然后可以在您的用户界面中按照需要使用它们。
  • Shadow DOM(影子DOM):一组JavaScript API,用于将封装的“影子”DOM树附加到元素(与主文档DOM分开呈现)并控制其关联的功能。通过这种方式,您可以保持元素的功能私有,这样它们就可以被脚本化和样式化,而不用担心与文档的其他部分发生冲突。
  • HTML templates(HTML模板):