0Pricing
HTML Academy · Pelajaran

Shadow DOM Deklaratif

Pasang shadow DOM dari HTML tanpa JavaScript menggunakan shadowrootmode.

Shadow DOM Deklaratif 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.

Masalah yang Diatasinya

Shadow DOM tradisional dibuat melalui JavaScript (attachShadow). Untuk halaman yang dirender di server, ini berarti pohon bayangan kosong sampai JS berjalan—menggagalkan tujuan SSR untuk mengirimkan HTML lengkap pada byte pertama. Shadow DOM Deklaratif mengatasinya.

Atribut shadowrootmode

Sebuah <template> dengan shadowrootmode="open" mendeklarasikan akar bayangan dalam HTML saat penguraian. Peramban memasang akar bayangan ke elemen induk secara otomatis; konten template menjadi pohon bayangan. Tidak diperlukan JavaScript.

<my-card>
  <template shadowrootmode="open">
    <style>:host { display: block; padding: 16px; }</style>
    <slot></slot>
  </template>
  <p>This goes into the slot</p>
</my-card>

SSR dengan Komponen Web

Shadow DOM Deklaratif memungkinkan komponen web yang benar-benar dirender di server: server menghasilkan seluruh pohon bayangan secara langsung, peramban menguraikan dan memasangnya sebelum JavaScript apa pun dijalankan, lalu JavaScript hidrasi dapat mengambil alih dari kondisi dasar yang sudah dirender sepenuhnya. Kini setara dengan SSR kerangka kerja.

Mode: terbuka atau tertutup

Mode yang tersedia sama seperti pada attachShadow imperatif: shadowrootmode="open" mengekspos akar bayangan sebagai element.shadowRoot; shadowrootmode="closed" menyembunyikannya. Perilakunya identik dengan pasangan yang dipasang melalui JavaScript.

Diuraikan Sekali per Elemen

Peramban memasang akar bayangan saat pertama kali menemukan <template shadowrootmode>. Setelah terpasang, template digunakan dan dihapus—kueri terhadapnya nanti tidak mengembalikan apa pun. Ini sesuai dengan siklus hidup attachShadow: sebuah akar bayangan ada selama masa hidup elemen.

Slot Berfungsi Normal

Anak ringan (elemen <p> di luar <template> dalam contoh) diproyeksikan ke elemen <slot> di dalam pohon bayangan, sama seperti pada DOM bayangan imperatif. Komposisinya identik; yang berbeda hanya mekanisme pemasangannya.

Menggabungkannya dengan Elemen Kustom

Jika <my-card> adalah elemen kustom yang terdaftar, proses peningkatan akan menggunakan akar bayangan yang sudah terpasang, bukan memanggil attachShadow lagi. Kelas elemen kustom dapat membaca this.shadowRoot dalam connectedCallback tanpa perlu membuatnya.

Dukungan Peralatan Server

Lit-html render, komponen Astro, dan beberapa kerangka kerja lain kini menghasilkan DOM bayangan deklaratif sebagai bagian dari keluaran SSR. Membuatnya sendiri juga memungkinkan: sistem templat berbasis teks apa pun dapat menulis template shadowrootmode.

Dukungan Peramban

DOM bayangan deklaratif tersedia di Chrome, Edge, Safari, dan Firefox. Peramban lama mengabaikan elemen <template> secara diam-diam—konten di dalam template tidak terlihat, yang merupakan degradasi bertahap yang baik untuk lingkungan yang belum mendukungnya.

Strategi Polyfill

Untuk dukungan yang lebih luas, skrip kecil dapat menelusuri DOM dan mengubah template[shadowrootmode] menjadi akar bayangan yang sebenarnya. Jalankan skrip ini sebelum mendaftarkan elemen kustom apa pun agar peningkatan komponen berikutnya menemukan pohon bayangan yang diharapkan.

Kompromi

DOM bayangan deklaratif menggandakan struktur: konten <template> berada di dalam HTML meskipun juga sudah ditanamkan ke dalam kelas komponen. Untuk halaman dengan banyak komponen yang sama, hal ini memperbesar muatan. Kerangka kerja melakukan deduplikasi; SSR yang dibuat sendiri mungkin ingin melakukan hal yang sama.

Kapan Mengadopsinya

Jika Anda menerbitkan komponen web dan memedulikan perenderan pada byte pertama atau optimisasi mesin pencari, adopsilah sekarang. Fitur ini stabil, didukung, dan secara drastis meningkatkan dukungan SSR untuk aplikasi berbasis komponen web. Fitur ini tidak berlaku untuk aplikasi yang tidak menggunakan DOM bayangan.

Pemeriksaan Pengetahuan

Masalah apa yang diatasi DOM Bayangan Deklaratif dibandingkan dengan attachShadow imperatif?

Ringkasan

DOM Bayangan Deklaratif menggunakan <template shadowrootmode="open"> di dalam elemen kustom untuk memasang akar bayangan saat penguraian, tanpa memerlukan JS. Fitur ini memungkinkan SSR yang sebenarnya untuk komponen web: pohon bayangan, gaya tercakup, dan slot semuanya berfungsi sebelum hidrasi. Didukung di semua peramban modern; polyfill tersedia untuk peramban lama. Kerangka kerja seperti Lit dan Astro menghasilkannya secara otomatis.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Shadow DOM Deklaratif” gratis?

Ya — teks lengkap “Shadow DOM Deklaratif” 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 “Shadow DOM Deklaratif”?

Pasang shadow DOM dari HTML tanpa JavaScript menggunakan shadowrootmode. 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 “Shadow DOM Deklaratif” 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

  1. Shadow DOM Deklaratif
  2. Popover API
  3. Elemen selectlist
  4. Pemicu Minat dan Atribut Command
← Kembali ke HTML Academy