
Web geliştirme süreçlerinde yeniden kullanılabilir, modüler ve bağımsız bileşenler oluşturmak, hem kod yönetimini kolaylaştırır hem de performansı artırır. Web Bileşenleri (Web Components), tarayıcı tarafından yerel olarak desteklenen ve JavaScript çerçevelerine bağımlı olmadan özel HTML etiketleri oluşturmaya olanak tanıyan güçlü bir teknolojidir.
Web Bileşenleri Nedir?
Web Bileşenleri, HTML, CSS ve JavaScript kullanarak oluşturulan, bağımsız ve yeniden kullanılabilir bileşenlerdir. Üç temel teknoloji üzerine inşa edilir:
- Custom Elements (Özel HTML Etiketleri):
- class yapısı ile yeni HTML etiketleri oluşturmayı sağlar.
- Shadow DOM:
- Bileşenlerin iç yapısını dış etkileşimlerden izole eder.
- HTML Templates ve Slots:
- Bileşenlerin içeriğini daha dinamik hale getirir.
Bu teknolojiler, framework bağımsız olarak native (yerel) bileşenler oluşturmayı mümkün kılar.
Web Bileşenlerinin Avantajları
- Modüler ve Tekrar Kullanılabilir Kod:
- Bir kez yazılan bileşen, farklı projelerde kullanılabilir.
- Bağımsız Çalışma:
- Shadow DOM sayesinde dış stillerden ve JavaScript değişikliklerinden etkilenmez.
- Performans ve Hafiflik:
- Framework gerektirmediği için daha hızlı yüklenir ve optimize çalışır.
Örnek: Basit Bir Web Bileşeni
Aşağıda, bir hello-world bileşeni oluşturulmuştur:
HTML:
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Web Bileşenleri Örneği</title>
</head>
<body>
<hello-world></hello-world>
<script>
class HelloWorld extends HTMLElement {
constructor() {
super();
this.attachShadow({ mode: 'open' });
this.shadowRoot.innerHTML = `
<style>
p { color: blue; font-weight: bold; }
</style>
<p>Merhaba, Web Bileşenleri!</p>
`;
}
}
customElements.define('hello-world', HelloWorld);
</script>
</body>
</html>
Kod Açıklaması:
- HelloWorld sınıfı, HTMLElement sınıfından türetilerek yeni bir bileşen oluşturuldu.
- attachShadow({ mode: 'open' }) ile Shadow DOM oluşturuldu.
- HTML ve CSS, shadowRoot.innerHTML içine eklendi.
- customElements.define('hello-world', HelloWorld) ile özel HTML etiketi tanımlandı.
Web Bileşenleri Nerelerde Kullanılabilir?
- UI Bileşenleri: Butonlar, kartlar, modal pencereler.
- Form Bileşenleri: Dinamik giriş alanları, doğrulama bileşenleri.
- Bağımsız Widget’lar: Haritalar, grafikler, hava durumu bileşenleri.


