- Yalnızca HTML ile aynı öğeyi birden fazla sayfaya eklemeyi sağlayan bir
include özelliği yok
- CSS CSS'i, JavaScript ise JS'i çağırabiliyorken, HTML'in HTML'i içeri alamaması soru işareti yaratıyor
- Bu sorunu çözmek için çeşitli JavaScript çözümleri, şablon dilleri ve statik site üreticileri kullanılıyor
- Performans, güvenlik, render gecikmesi ve döngüsel ekleme gibi karmaşık sorunlar bu özelliğin önündeki engeller olarak görülüyor
- Birçok geliştirici HTML'de saf, bildirimsel bir include özelliği istese de, bu hâlâ web standartlarına yansımış değil
HTML'de Include Özelliğinin Olmamasının Nedeni Üzerine Soru
Sorunun ortaya konması
index.html, about.html, contact.html gibi birden fazla sayfada ortak bir header'ı tekrar tekrar eklemek zahmetli
- Geliştiriciler tekrar oluşturmadan, bir kez tanımlanan header'ı yeniden kullanmak istiyor
Zaten var olan alternatif yöntemler
- JavaScript
fetch API'si ile harici HTML'i alıp DOM'a ekleme yöntemi
- Server Side Include (SSI), PHP'nin
include yapısı, statik site üreticileri ve şablon dilleri çözüm olarak mevcut
<iframe> ve <object> gibi HTML öğeleri de kullanılabilir, ancak erişilebilirlik, performans ve stil izolasyonu sorunları nedeniyle uygun değiller
- Sonuç olarak HTML'in kendi içinde basit bir include sözdizimi yok
HTML'de neden bu özellik yok?
- CSS ve JS için sırasıyla
@import ve import sözdizimi varken HTML için böyle bir şey yok
- Web standartları genelde geliştiricilerin çok kullandığı özellikleri zamanla benimsemiştir, ancak HTML include bunun bir örneği olamadı
- Gündeme getirilen olası nedenler:
- Preload scanner çalışmasını bozma ihtimali
- Asenkron yüklemede layout kayması / titreme sorunları
- İç içe veya döngüsel include işlemlerini yönetmenin karmaşıklığı
- Web hosting trafiğinin artmasına yönelik itirazlar
- Güvenlik sorunları (CORS, CSP vb.) ile belge yükleme olaylarının zamanlamasında çakışmalar
- Ya da basitçe önceliğinin düşük olması ve net bir önerinin ortaya konmamış olması
İlgili tartışmalar
- GitHub'daki WHATWG tartışma başlığında #2791 konu aktif biçimde ele alınıyor
- Geçmişte Chrome'da bir dönem HTML Imports vardı, ancak diğer tarayıcıların destek vermemesiyle birlikte kaldırıldı
- HTMX, Web Components, XSLT, SSI gibi alternatif yaklaşımlar da paylaşılıyor
Topluluk tepkilerinin özeti
- HTML'in gelişimi statik işaretleme merkezli kaldığı için, mantıksal özellikleri dışarıda bırakan yaklaşım hâlâ güçlü
- Pek çok kişi bu özelliği istese de, standartlaşma sürecinde sesini duyurması zor olan bireysel geliştiriciler çoğunluğu oluşturuyor
- Performans, güvenlik, render işleme, döngü önleme gibi karmaşık tasarım sorunları çözülmeden bu özelliğin gelmesinin zor olduğu da düşünülüyor
- Bazı geliştiricilere göre bunun nedeni, HTML'in sadece "sonuçtan" sorumlu olması gerektiği anlayışı
Sonuç
- HTML'de hâlâ saf bir include özelliği yok ve bunun için farklı harici araçlara ve dillere başvurmak gerekiyor
- Buna rağmen birçok geliştirici hâlâ basit, HTML tabanlı bir yeniden kullanım yapısı bekliyor
1 yorum
Hacker News görüşü