Web Components 是 W3C 的原生组件方案,三件套缺一不可:自定义元素(customElements.define 注册新标签)、Shadow DOM(attachShadow 创建样式隔离的封闭 DOM)、template(可复用的 HTML 片段模板)。
它的价值是「框架无关」:用原生标准写的组件,React、Vue、纯 HTML 都能直接用。React/Vue 项目里也常把无框架依赖的通用组件(如日期选择器)做成 Web Component。
class MyCard extends HTMLElement { constructor() { super(); const shadow = this.attachShadow({ mode: 'open' }); shadow.innerHTML = ` <style>h2 { color: #2f81f7; }</style> <h2><slot></slot></h2>`; // slot 接收外部内容 } } customElements.define('my-card', MyCard); // 使用:<my-card>标题文字</my-card>