Mendefinisikan Elemen dengan customElements.define
Daftarkan kelas elemen khusus pada peramban.
Mendefinisikan Elemen dengan customElements.define adalah pelajaran HTML Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar HTML Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus HTML Academy mencakup 4 pelajaran total.
Apa Itu Elemen Kustom?
Elemen kustom memungkinkan Anda membuat tag HTML sendiri yang didukung oleh sebuah kelas JavaScript. Setelah didefinisikan, <my-card> berperilaku seperti elemen bawaan apa pun: dapat ditulis dalam HTML, dicari, ditata, diprogram, dan digunakan di dalam kerangka kerja tanpa perubahan.
Persyaratan Tanda Hubung
Setiap nama elemen kustom harus menyertakan setidaknya satu tanda hubung — user-avatar, app-button, my-card. Tanda hubung membedakan elemen kustom dari tag HTML bawaan saat ini dan mendatang, serta diwajibkan oleh spesifikasi.
Mendefinisikan Kelas
Elemen kustom adalah kelas yang mewarisi HTMLElement (atau subkelas bawaan). Kelas tersebut dapat mendeklarasikan konstruktor dan panggilan balik siklus hidup. Properti publik dan metode pada kelas menjadi antarmuka pemrograman elemen.
class MyCard extends HTMLElement {
constructor() {
super();
this.textContent = "Hello from MyCard";
}
}Mendaftarkan dengan define
customElements.define("my-card", MyCard) mendaftarkan kelas dengan nama tag tersebut. Setelah pendaftaran, setiap <my-card> yang sudah ada maupun yang dibuat kemudian dalam dokumen diubah menjadi instans kelas tersebut.
super() Bersifat Wajib
Konstruktor harus memanggil super() sebagai pernyataan pertamanya sebelum mengakses this. Melewati super() akan menimbulkan "Failed to construct 'HTMLElement'". Perlakukan hal ini sebagai aturan standar konstruktor kelas JavaScript.
Jangan Membaca DOM di Konstruktor
Konstruktor tidak boleh membaca atribut atau anak elemen — keduanya mungkin belum diuraikan saat konstruksi. Pindahkan penyiapan yang menyentuh DOM ke dalam connectedCallback, yang hanya dijalankan setelah elemen berada di dalam dokumen.
Pendaftaran Bersifat Permanen
Nama elemen hanya dapat didaftarkan sekali per halaman. Mendefinisikan ulang nama yang sama akan menimbulkan NotSupportedError. Muat ulang halaman untuk menguji perubahan selama pengembangan; dalam produksi, daftarkan setiap komponen sekali saat mulai.
Polifil
Elemen kustom tersedia di setiap peramban modern. Untuk peramban yang sangat lama (sebagian besar sudah tidak digunakan), polifil webcomponents.js menyediakan cadangan. Proyek baru dapat menggunakan dukungan bawaan dan melewatkan polifil sepenuhnya.
Mendeteksi Status Definisi
customElements.get("my-card") mengembalikan kelas jika sudah didefinisikan, dan undefined jika belum. customElements.whenDefined("my-card") mengembalikan promise yang diselesaikan setelah elemen didaftarkan — berguna untuk kode yang perlu menunggu definisi yang dimuat terlambat.
customElements.whenDefined("my-card").then((Class) => {
console.log("MyCard is ready");
});Menggunakan Elemen
Setelah didefinisikan, gunakan elemen tersebut persis seperti tag bawaan: tuliskan dalam HTML (<my-card></my-card>), buat melalui document.createElement("my-card"), atau buat instans melalui new MyCard() lalu sisipkan. Ketiga jalur tersebut menghasilkan instans yang sama setelah ditingkatkan.
Konvensi Penamaan
Beri awalan pada elemen kustom dengan nama proyek atau perusahaan (cd-card, app-modal) untuk menghindari benturan dengan pustaka lain di halaman yang sama. Ekosistem komponen web tidak dibundel — siapa pun di halaman Anda dapat mendaftarkan nama apa pun, dan pendaftaran pertama yang berlaku.
Uji Pemahaman
Mengapa setiap nama elemen kustom harus mengandung tanda hubung?
Ringkasan
Elemen kustom adalah kelas JavaScript yang mewarisi HTMLElement dan didaftarkan melalui customElements.define("name", Class), dengan nama yang harus mengandung tanda hubung. Konstruktor harus memanggil super() terlebih dahulu dan tidak boleh membaca DOM; tunda pekerjaan DOM ke connectedCallback. Elemen yang telah didefinisikan berperilaku persis seperti tag bawaan di mana pun digunakan.
Belajar HTML dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 40
- Pelajaran
- 159
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Mendefinisikan Elemen dengan customElements.define” gratis?
Ya — teks lengkap “Mendefinisikan Elemen dengan customElements.define” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus HTML Academy, upgrade ke CoddyKit PRO. Kursus HTML Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Mendefinisikan Elemen dengan customElements.define”?
Daftarkan kelas elemen khusus pada peramban. Kamu berlatih HTML Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai HTML Academy?
Tidak diperlukan pengalaman sebelumnya. HTML Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Mendefinisikan Elemen dengan customElements.define” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran HTML Academy ini?
Ya. Setiap pelajaran HTML Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Mendefinisikan Elemen dengan customElements.define
- connectedCallback dan disconnectedCallback
- Atribut yang Diamati dan attributeChangedCallback
- Memperluas Elemen Bawaan