--- title: Web Components slug: Web/Web_Components tags: - Artikel Web - Gambaran - HTML Imports - JavaScript - Landing - Pengembangan Web - Template - Web Components - component - custom elements - shadow dom - slot translation_of: Web/Web_Components ---
{{DefaultAPISidebar("Web Components")}}

Web Components adalah kumpulan fitur teknologi yang memungkinkan Anda membuat elemen khusus yang dapat digunakan kembali dengan fungsionalitasnya yang dikemas jauh dari sisa kode Anda dan menggunakannya di aplikasi web Anda.

Konsep dan penggunaan

Sebagai pengembang, kita semua tahu bahwa menggunakan kembali kode sebanyak mungkin merupakan ide yang bagus. Hal ini biasanya tidak mudah untuk struktur markup kustom memikirkan HTML kompleks (serta gaya dan skrip terkait) yang terkadang harus Anda tulis untuk memnuat kontrol UI khusus, dan bagaimana menggunakannya beberapa kali dapat mengubah halaman Anda menjadi berantankan jika Anda tidak berhati-hati.

Web Components bertujun untuk menyelesaikan masalah yang terdiri dari tiga teknologi utama, yang dapat digunakan bersama untuk membuat elemen kustom serbaguna dengan fungsionalitas terenkapsulasi yang dapat digunakan kembali di mana pun Anda suka tanpa takut benturan kode.

Pendekatan dasar untuk mengimplementasikan web component biasanya terlihat seperti ini:

  1. Buat kelas di mana Anda menentukan fungsionalitas web component Anda, menggunakan sintaks kelas ECMAScript 2015 (lihat Kelas untuk informasi lebih lanjut).
  2. Daftarkan elemen kustom baru Anda menggunakan metode {{domxref ("CustomElementRegistry.define ()")}}, meneruskan nama elemen yang akan ditentukan, kelas atau fungsi di mana fungsionalitasnya ditentukan, dan secara opsional, elemen apa yang diwarisi dari.
  3. Jika perlu, lampirkan shadow DOM ke elemen khusus menggunakan metode {{domxref ("Element.attachShadow ()")}}. Tambahkan child element, event listener, dll., Ke shadow DOM menggunakan metode DOM biasa.
  4. Jika perlu, tentukan template HTML menggunakan {{htmlelement ("template")}} dan {{htmlelement ("slot")}}. Sekali lagi gunakan metode DOM biasa untuk mengkloning template dan melampirkannya ke shadow DOM Anda.
  5. Gunakan elemen kustom Anda di mana pun Anda suka di halaman Anda, seperti yang Anda lakukan pada elemen HTML biasa.

Tutorial

Menggunakan custom element
Panduan yang menunjukkan cara menggunakan fitur elemen khusus untuk membuat komponen web sederhana, serta melihat callback siklus proses dan beberapa fitur lanjutan lainnya.
Menggunakan shadow DOM
Panduan yang mempelajari dasar-dasar shadow DOM, menunjukkan cara melampirkan shadow DOM ke elemen, menambahkan ke shadow DOM tree, menatanya, dan banyak lagi.
Menggunakan templates and slots
Panduan yang menunjukkan cara menentukan struktur HTML yang dapat digunakan kembali menggunakan elemen {{htmlelement ("template")}} dan {{htmlelement ("slot")}}, lalu menggunakan struktur tersebut di dalam komponen web Anda.

Referensi

Custom elements

{{domxref("CustomElementRegistry")}}
Berisi fungsionalitas yang terkait dengan elemen kustom, terutama metode {{domxref ("CustomElementRegistry.define()")}} yang digunakan untuk mendaftarkan elemen kustom baru sehingga dapat digunakan di dokumen Anda.
{{domxref("Window.customElements")}}
Mengembalikan referensi ke objek {{domxref("CustomElementRegistry.define()")}}.
Life cycle callbacks
Fungsi panggilan balik khusus yang ditentukan di dalam definisi kelas elemen khusus, yang memengaruhi perilakunya:
Ekstensi untuk membuat elemen bawaan khusus
CSS pseudo-classes
Pseudo-classes yang berkaitan secara khusus dengan elemen khusus:
Pseudo-elements yang berkaitan secara khusus dengan elemen khusus:

Shadow DOM

{{domxref("ShadowRoot")}}
Merepresentasikan root node dari shadow DOM subtree.
{{domxref("DocumentOrShadowRoot")}}
Fitur penentu mixin yang tersedia di seluruh dokumen dan shadow roots.
Ekstensi {{domxref("Element")}}
Ekstensi ke antarmuka Element yang terkait dengan shadow DOM:
Penambahan {{domxref ("Node")}} yang relevan
Penambahan antarmuka Node yang relevan dengan shadow DOM:
Ekstensi {{domxref("Event")}}
Ekstensi ke antarmuka Event yang terkait dengan shadow DOM:

HTML templates

{{htmlelement("template")}}
Berisi fragmen HTML yang tidak dirender saat dokumen penampung awalnya dimuat, tetapi dapat ditampilkan saat runtime menggunakan JavaScript, terutama digunakan sebagai dasar struktur elemen khusus. Antarmuka DOM terkait adalah {{domxref ("HTMLTemplateElement")}}.
{{htmlelement("slot")}}
Placeholder di dalam web component yang dapat Anda isi dengan markup Anda sendiri, yang memungkinkan Anda membuat DOM tree terpisah dan menyajikannya bersama-sama. Antarmuka DOM terkait adalah {{domxref ("HTMLSlotElement")}}
Atribut HTML global slot
Menetapkan slot di shadow tree shadow DOM ke sebuah elemen.
{{domxref("Slotable")}}
Mixin yang diimplementasikan oleh node {{domxref ("Element")}} dan {{domxref ("Text")}}, mendefinisikan fitur yang memungkinkan mereka menjadi konten elemen {{htmlelement ("slot")}}. Mixin mendefinisikan satu atribut, {{domxref ("Slotable.assignedSlot")}}, yang mengembalikan referensi ke slot tempat node disisipkan.
Ekstensi {{domxref("Element")}}
Extensions ke antarmuka Element yang terkait dengan slot:
CSS pseudo-elements
Pseudo-elements yang berkaitan secara khusus dengan slot:
Event {{event("slotchange")}}
Diaktifkan pada instance {{domxref ("HTMLSlotElement")}} (elemen {{htmlelement ("slot")}}) saat node yang ada di slot itu berubah.

Contoh

Kami sedang membangun sejumlah contoh dalam repo GitHub contoh komponen web kami. Lebih banyak akan ditambahkan seiring berjalannya waktu.

Spesifikasi

Spesifikasi Status Komentar
{{SpecName("HTML WHATWG","scripting.html#the-template-element","<template> element")}} {{Spec2("HTML WHATWG")}} Definisi dari {{HTMLElement("template")}}.
{{SpecName("HTML WHATWG","custom-elements.html#custom-elements","custom elements")}} {{Spec2("HTML WHATWG")}} Definisi dari HTML Custom Elements.
{{SpecName("DOM WHATWG","#shadow-trees","shadow trees")}} {{Spec2("DOM WHATWG")}} Definisi dari Shadow DOM.
{{SpecName("HTML Imports", "", "")}} {{Spec2("HTML Imports")}} Definisi Impor HTML awal.
{{SpecName("Shadow DOM", "", "")}} {{Spec2("Shadow DOM")}} Definisi Shadow DOM awal.

Kompabilitas browser

Umumnya:

Untuk dukungan browser mendetail dari fitur tertentu, Anda harus membaca halaman referensi yang tercantum di atas.

Lihat juga