Web Components คือชุดของ API ของเบราว์เซอร์ดั้งเดิมสำหรับการสร้างองค์ประกอบ HTML แบบกำหนดเองที่สามารถนำกลับมาใช้ได้และถูกห่อหุ้ม — เป็นแบบอิสระจากเฟรมเวิร์กและอิงตามมาตรฐาน เทคโนโลยีสามอย่างมารวมกัน:
Web Components คือชุดของ API ของเบราว์เซอร์ดั้งเดิมสำหรับการสร้างองค์ประกอบ HTML แบบกำหนดเองที่สามารถนำกลับมาใช้ได้และถูกห่อหุ้ม — เป็นแบบอิสระจากเฟรมเวิร์กและอิงตามมาตรฐาน เทคโนโลยีสามอย่างมารวมกัน:
<template>, <slot>) — มาร์กอัปเฉื่อยและสามารถนำกลับมาใช้ได้class UserCard extends HTMLElement {
connectedCallback() { // lifecycle: runs when added to the page
const shadow = this.attachShadow({ mode: "open" }); // create shadow DOM
shadow.innerHTML = `
<style> h2 { color: blue; } </style>
<h2>${this.getAttribute("name")}</h2>
<slot></slot>
`;
}
}
customElements.define("user-card", UserCard); // name MUST contain a hyphen
<user-card name="Ann">Extra content goes in the slot</user-card>
สไตล์ภายในรูท Shadow ถูก กำหนดขอบเขต — CSS ของหน้าไม่สามารถเข้าไป และ CSS ของส่วนประกอบไม่สามารถรั่วไหลออก นี่แก้ปัญหา global-CSS ได้อย่างเป็นธรรมชาติ:
/* page CSS */ h2 { color: red; } /* does NOT affect the <h2> inside user-card */
connectedCallback() // added to DOM
disconnectedCallback() // removed from DOM (cleanup)
attributeChangedCallback(name, old, val) // an observed attribute changed
static get observedAttributes() { return ["name"]; }
Web Components ช่วยให้คุณสามารถสร้างวิดเจ็ตที่นำกลับมาใช้ได้ซึ่งทำงานใน เฟรมเวิร์ก ใดๆ (หรือไม่มีเลย) พร้อมการห่อหุ้มสไตล์/DOM ที่แท้จริง — เหมาะสำหรับระบบออกแบบและไมโคร-เฟรนต์เอนด์ที่แชร์ระหว่างทีมที่ใช้สแต็กต่างกัน
นี่คือวิธีที่ไลบรารี่เช่น Shoelace จัดส่งส่วนประกอบที่เป็นอิสระจากเฟรมเวิร์ก
การแลกเปลี่ยน (API ที่ซ้ำซาก ความซับซ้อน SSR/styling) หมายความว่านักพัฒนาแอปยังคงชอบ React/Vue แต่พื้นฐานของแพลตฟอร์มนั้นมีประสิทธิภาพและอิงตามมาตรฐาน