Web Components 规范已经完成并通过,但未被所有浏览器原生实现。
目前 Safari 10.1+、Chrome 54+ 和 Firefox 63+ 原生支持 Web Components。
相比之下,Vue 组件不需要任何 polyfill,并且在所有支持的浏览器 (IE9 及更高版本) 之下表现一致。必要时,Vue 组件也可以包装于原生自定义元素之内。
HTML Imports
这块存在争议,Mozilla认为将来应该用更合适的方式
close
Shadow DOM会在自定义标签解析时,加载到普通的DOM上。内部可以通过Element.attachShadow()来获取shadow root。它有一个mode属性,值可以是open或者closed,表示能否在外部获取Shadow DOM对象,一般而言应当为closed,内部实现不应该对外可见。
play
https://stackblitz.com/edit/4wm6j6?file=custom-element.js
参考
w3c web components规范
https://www.w3.org/wiki/WebComponents/
https://developer.mozilla.org/zh-CN/docs/Web/Web_Components