Web Components 实战
Web Components 是浏览器原生的组件化方案,跨框架、可复用,适合做设计系统。
定义一个组件
class UserCard extends HTMLElement {
constructor() {
super();
this.attachShadow({ mode: "open" });
}
connectedCallback() {
this.shadowRoot.innerHTML = `
<style>
.card { border: 1px solid #ddd; border-radius: 8px; padding: 16px; }
.name { font-weight: bold; }
</style>
<div class="card">
<div class="name">${this.getAttribute("name")}</div>
<slot></slot>
</div>
`;
}
}
customElements.define("user-card", UserCard);
使用:
<user-card name="张三">
<p>前端工程师</p>
</user-card>
优势
- 框架无关:React/Vue/原生都能用
- 样式隔离:Shadow DOM 自带作用域
- 原生支持:无需构建工具
适用场景
Web Components 特别适合跨团队的设计系统(Design System),一次编写,所有框架都能复用。