Çözüldü Vanilla JavaScript ile component oluşturmak

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

533388

Hectopat
Katılım
27 Mart 2022
Mesajlar
4.423
Makaleler
2
Çözümler
54
JavaScript ile component oluşturmak ve HTML sayfasında aynı elementmiş gibi çağırmak istiyorum ama anlamadığım birkaç yer var bunları söyler ve birkaç tutorial önerirseniz sevinirim.
Öncelikle kullandığım bu kaynak nasıl onu söylerseniz sevinirim.
medium linki
Ve bu makaleden incelediğim JavaScript kodlarında neden htmlelement classından miras aldık?
@RaSGooL hocam bakabilir misiniz müsait olunca, diğer arkadaşlar da anlatırlarsa sevinirim.
 
Çözüm
Örnek saat componenti oluşturdum, bakabilirsin.
JavaScript:
class TimeDisplay extends HTMLElement {
  connectedCallback() {
    console.log("Element DOM'a eklendi.");
    this.interval = setInterval(() => {
      this.textContent = new Date().toLocaleTimeString();
    }, 1000);
  }
  disconnectedCallback() {
    console.log("Element DOM'dan çıkarıldı.");
    clearInterval(this.interval);
  }
}

customElements.define("time-display", TimeDisplay);
HTML:
<time-display></time-display>
Örnek saat componenti oluşturdum, bakabilirsin.
JavaScript:
class TimeDisplay extends HTMLElement {
  connectedCallback() {
    console.log("Element DOM'a eklendi.");
    this.interval = setInterval(() => {
      this.textContent = new Date().toLocaleTimeString();
    }, 1000);
  }
  disconnectedCallback() {
    console.log("Element DOM'dan çıkarıldı.");
    clearInterval(this.interval);
  }
}

customElements.define("time-display", TimeDisplay);
HTML:
<time-display></time-display>
 
Çözüm
Örnek saat componenti oluşturdum, bakabilirsin.
JavaScript:
class TimeDisplay extends HTMLElement {
 connectedCallback() {
 console.log("Element DOM'a eklendi.");
 this.interval = setInterval(() => {
 this.textContent = new Date().toLocaleTimeString();
 }, 1000);
 }
 disconnectedCallback() {
 console.log("Element DOM'dan çıkarıldı.");
 clearInterval(this.interval);
 }
}

customElements.define("time-display", TimeDisplay);
HTML:
<time-display></time-display>

Merak ettigim şey htmlelement sinifidan miras almasak o ozellikleri kullanamiyor muyuz?
 
disconnectedCallback() { console.log("Element DOM'dan çıkarıldı."); clearInterval(this.interval); } }

Peki bu disconnectCallback() ne zaman çalışıyor?Mesela benim kodumda işlevi ne bu fonksiyonun?

JavaScript:
class Mycomponent extends HTMLElement {
 connectedCallback() {
 console.log("Element DOM'a eklendi.");
 document.write("Merhaba Component");
 }
 disconnectCallback() {
 document.write("Bittiı");
 }
}

customElements.define("my-component",Mycomponent);
 
@Kxaan Hocamın yazdığı örnek basit ve anlaşılır.

CustomElement oluşturmak istiyorsan, HTMLElement den miras almak zorundasın.
Attığın medium içeriği fena değil.
Bu Linkten React ile nasıl kullanılıyor bakabilirsin. Bunu Vue, Svelte veya başka bir kütüphane içinde yapabilirsin.

Büyük projelerde çok fazla custom element görebilirsin. Bizim şirketteki LMS projelerin çoğu yerinde React, Vue gibi ayrı ayrı projeler çalışıyor. Farklı ekip geliştiriyor. Kim ne kullanırsa kullansın, çıktı olarak hep benzer mantıkta yapıyoruz. CDN'e javascript dosyalarını versiyonlayarak atıyoruz. Bu sebeple karışma vs olmuyor. Ama şunu belirteyim, yönetmesi zor.

Lit adında bir kütüphane var. Adamlar custom element yapmayı çok güzel hale getirmiş. Detaylı araştırmak istersen altta vereceğim siteyi inceleyebilirsin. Ben kullanmadım ama Trendyol/Baklava projesinde görmüştüm.
 

Geri
Yukarı