- plain HTML kadar basit bir yaklaşımla modüler ve dinamik web kullanıcı arayüzleri oluşturmayı sağlayan minimalist bir HTML mikroframework'ü
- Yalnızca tek bir şey yapar: sayfadaki herhangi bir öğeden HTML kaynağı yükleyebilir
- Sayfanın yalnızca bir bölümünü güncellemeyi mümkün kılarak sayfa parçalarının değiştirilebilmesini sağlar
- Toplam 166 bayt boyutundadır; yalnızca saf HTML kullanır, bağımlılığı yoktur ve JS bundle'ı, backend, özel öznitelikler ya da DSL, custom element gerektirmez
- Gerçek DOM ile etkileşim kullanır; VDOM, click listener, AJAX,
fetch vb. kullanmaz
- Yapmanız gereken tek şey,
iframe tabanlı satır içi bir HTML snippet'i eklemek
<iframe hidden name=htmz onload="setTimeout(()=>document.querySelector(this.contentWindow.location.hash||null)?.replaceWith(...this.contentDocument.body.childNodes))"></iframe>
Temel kullanım
- htmz kullanmak için, kaynak URL'yi gösteren bir
href özniteliğine (veya form için action) ve hedef ID seçicisine sahip bir hiperlinke (veya forma) ihtiyaç vardır.
- Bu, URL fragment'ini hedef ID seçicisi olarak yeniden kullanıyormuş gibi görünür; ancak bu bağlamda URL fragment'i başka bir amaçla kullanılmadığı için yeniden kullanılır.
Tam olarak ne yapıyor?
- htmz, sayfa içindeki herhangi bir öğe içinde HTML kaynağı yüklemeyi sağlayan tek bir özellik sunar.
- Bu fikir yeni değildir; web sayfalarını bağımsız olarak yeniden yüklenen bölümlere ayırma yaklaşımı 1990'ların ortalarından beri vardır.
- htmz, HTML frame'lerinin genelleştirilmiş bir biçimidir ve sayfa içindeki herhangi bir öğeden HTML kaynağı yükleyebilir.
İleri düzey kullanım
- Şu anda HTML5'te yalnızca ve öğeleri htmz için hedef belirleyip onu çağırabilir.
- öğesi kullanılarak tüm göreli bağlantılar için htmz varsayılan hedef olarak ayarlanabilir.
- Gerçek bir hedef değeri kullanmayı tercih ediyorsanız, hedef ID seçicisini doğrudan
target özniteliğinin içine yazabileceğiniz bir hack kullanabilirsiniz.
Script yazımı / etkileşim
- Daha fazla etkileşim gerekiyorsa, htmz'nin eşlik eden script dili olan JavaScript kullanılabilir.
- htmz, JS yazmayı veya UI kütüphaneleri kullanmayı dışlamaz; ayrıca htmz ile normal HTTP formları üzerinden form değerleri göndermeye devam edebilirsiniz.
Genişletilebilirlik
- Gelişmiş seçiciler, hata işleme, çoklu hedefler vb. gerektiğinde geliştiriciler bunu ihtiyaçlarına göre genişletebilir.
SSS
- htmz, adı "htmz" olan bir
iframedir ve URL'yi iframe üzerinden yükleyerek htmz'yi çağırır.
- htmz, proxy hedef olarak çalışır ve yanıtı belirtilen hedefe iletir.
- htmz, DOM'u sürekli parse etmez, özel öznitelikleri veya söz dizimini aramaz ve DOM'a listener eklemez.
- htmz, yalnızca minimum JS kullanan bir HTML mikroframework'üdür.
- htmz bir snippet'tir ve adı 'Html with Targeted Manipulation Zones' ifadesinin kısaltmasıdır.
- Bu proje, htmx'e bir tepki olarak başladı ve htmx kullanmadan mevcut web ile yükle-bağla-hedefle işlevinin uygulanıp uygulanamayacağına dair bir deneydi.
- htmz, bu kadar küçük olmasına rağmen güçlü hissettirir; ana sınırlaması ise yanıt başına yalnızca tek bir hedefe sahip olabilmesidir.
GN⁺ görüşü
- Yenilikçi yaklaşım: htmz, web geliştirmede framework karmaşıklığını azaltan ve saf HTML kullanarak web arayüzleri oluşturmayı sağlayan yenilikçi bir yaklaşım sunuyor. Bu, başlangıç seviyesindeki yazılım mühendisleri için bile kolay erişilebilir bir web geliştirme yöntemi anlamına geliyor.
- Performans ve sadeliğin dengesi: 166 baytlık son derece hafif boyutu ve bağımlılıksız yapısı, web sayfası performansını ciddi ölçüde artırabilir. Ayrıca karmaşık JavaScript framework'lerini öğrenmeden etkili web sayfaları oluşturma sadeliği sunuyor.
- Web geliştirmenin geleceği: htmz, web geliştirmenin geleceğine dair ilgi çekici bir bakış sunuyor. Web standartları ve teknolojilerinin evriminin geliştiricilere nasıl daha basit ve verimli araçlar sağlayabileceğini gösteriyor.
3 yorum
Vay canına, bu bayağı ilginçmiş haha. Linkte bunun bir kütüphane ya da framework değil, sadece bir snippet olduğunu söylüyor... hehe
İleri düzey kullanım: mevcut HTML5'te yalnızca ve öğeleri -> mevcut HTML5'te yalnızca
veöğeleri HTML escape uygulanmamış gibi görünüyorHacker News görüşleri
Birinci yorum özeti:
iframeler ve hedeflenmiş formlar kullanma fikrine olumlu tepki.İkinci yorum özeti:
iframelerden kaçınmak için yalnızca birkaç özelliğin gerektiği söyleniyor.Üçüncü yorum özeti:
iframekullanarak sunucudan veri yükleyip DOM'u manipüle ettiklerini anlatıyor.Dördüncü yorum özeti:
Beşinci yorum özeti:
Altıncı yorum özeti:
this.ifadesinin kaldırılmasıyla kod boyutunun daha da küçültülebileceği öneriliyor.Yedinci yorum özeti:
targetkullanımı nedeniyle, JS devre dışıyken htmx gibi zarif biçimde kademeli bozulma göstermeyebileceği belirtiliyor.Sekizinci yorum özeti:
<slot>öğesini bu şekilde yeniden kullanmanın kötü bir fikir olduğu belirtiliyor.<slot>un çok belirli bir davranışı olduğu ve kütüphane ne yaparsa yapsın host öğenin çocuklarıyla değiştirildiği söyleniyor.<output>öğesinin mevcut olduğu hatırlatılıyor.Dokuzuncu yorum özeti:
Onuncu yorum özeti:
iframeyerine XHR kullandığı ve geri düğmesinin çalışması için varsayılan olarakpushStatekullandığı belirtiliyor.