CodeBlanks Logo Icon CodeBlanks

Hydration hooks

HTML kursu · İleri seviye · Ders 44/56

İstemci tarafı framework'ler için id ve data-* köprüsü yazarsın.

Hydration hook nedir?

Bir sayfa sunucuda kurulup tarayıcıya geldikten sonra, JavaScript bazen bu HTML'i canlandırıp etkileşimli hale getirir. Bu adıma hydration denir. JavaScript'in tutacağı noktalara da hydration hook (köprü) denir: genelde id ve data-* öznitelikleri bu işi görür.

Örneğin sunucu <div id="tabs"> gönderir; JavaScript bu id'yi bulur ve sekme davranışını bağlar. Yine <button data-target="#profile"> düğmesi, hangi paneli açacağını data-target ile bildirir. Bu köprüler sayesinde HTML önce, davranış sonra gelir.

id ve data-* birlikte

Hydration hook'larında iki öznitelik farklı işler yapar. id tekil bir nokta seçer: sayfada bir kez bulunur, JavaScript onu doğrudan yakalar. data-* ise bağıntı taşır: bir düğmenin hangi paneli açacağını, bir kartın hangi kaydı temsil ettiğini söyler.

İkisini birlikte kullanmak yaygındır. Örneğin <div id="profile-panel" data-role="panel"> hem tekil bir nokta hem de bir rol taşır. Dikkat: id her sayfada bir kez geçer; çoğaltma. data-* ise istediğin kadar öğeye aynı adla verilebilir.

Erişilebilir hook'lar

Hook'lar yalnızca JavaScript için değil, erişilebilirlik için de iş görür. id, <label for> ve aria-labelledby gibi ilişkilerin temelidir. <button aria-controls="profile-panel"> düğmesinin hangi paneli yönettiğini hem ekran okuyucuya hem JavaScript'e bildirir.

Yani iyi bir hook, birden çok amaca hizmet eder: JavaScript'i bulur, ekran okuyucuya ilişkiyi açıklar, test yazarken de sabit bir nokta verir. Böylece HTML hem canlanır hem de erişilebilir kalır. Hook'u yazarken bu üç amacı birlikte düşün.

Uygulama Bir sekme iskeleti yaz

Body içine bir sekme iskeleti yaz: bir <div id="tabs"> kökü, içinde data-target="#panel-profil" özniteliği ve dolu metni olan bir <button>, ardından id="panel-profil" özniteliğine sahip bir <section>. Section içinde dolu bir <h2> olsun. Button'ın aria-controls özniteliği de panel-profil değerini taşısın.

Örnek çözümü göster
<body>
  <div id="tabs">
    <button data-target="#panel-profil" aria-controls="panel-profil">Profil</button>
    <section id="panel-profil">
      <h2>Profil Bilgisi</h2>
    </section>
  </div>
</body>

Kendini test et

  1. Hangisi iyi bir hydration hook'tur?

    • Rastgele bir sınıf adı
    • Yinelenen bir metin
    • Bir renk kodu
    • Sayfa içinde tekil bir id
    Cevabı göster

    Sayfa içinde tekil bir id — Doğru. Tekil id, JavaScript'in tam noktayı bulmasını sağlar.

  2. Hook cümlesini tamamla

    <p>JavaScript, sunucudan gelen ____ ile köprüyü kurar.</p>
    Cevabı göster
    <p>JavaScript, sunucudan gelen id ve data-* ile köprüyü kurar.</p>
  3. Hook'u rolüyle eşleştir

    id
    Tekil nokta seçer
    data-target
    Hedef öğeyi işaret eder
    data-action
    Yapılacak işi taşır
    data-state
    Durum bilgisini taşır

İleri seviye bölümündeki tüm dersler