- Web bileşeni standartlarını temel alarak yalnızca reaktivite, bildirimsel şablonlar ve minimum boilerplate ekler
- 5KB düzeyindeki küçük boyutu ve hızlı render performansıyla, yalnızca değişen UI bölümlerini güncelleyerek performansı ve yükleme hızını optimize eder
- Tüm Lit bileşenleri yerel web bileşenleridir ve framework'ten bağımsız olarak HTML'nin kullanılabildiği her yerde yeniden kullanılabilir
- Shadow DOM kullanarak varsayılan olarak stil kapsamını sınırlar; böylece CSS seçicileri sadeleşir ve diğer stillerle çakışmalar önlenir
- Reactive Property ile bileşen API'sini ve iç durumu modeller, özellik değiştiğinde verimli yeniden render desteği sunar
- Tagged template Literals tabanlı şablonlarla hızlı ve basittir
- Paylaşılan bileşenlerden tasarım sistemlerine, vendor bağımlılığını azaltan ve bakım kolaylığını artıran tam uygulama geliştirmeye kadar çeşitli web projelerinde kullanılabilir
- Eğitim sunulur
- GitHub
4 yorum
3 yıldır böyle hissediyorum; vanilla web component’leri doğrudan kullanmak için hızlı ve geçiş dönemi için bir framework gibi hissettiriyor ama yavaş..
Ne anlama geliyor?
Web standartlarındaki Web Components ve yalnızca
lit-htmlkullanarak operasyon araçları geliştiriyorum; bilinmesi gereken bilgi miktarının en aza inmiş olması hoşuma gidiyor.lit-htmliçinde kullandığım özellikler de sadece event handler binding ve loop templating düzeyinde. (Geri kalanı için web standartları yeterli oluyor..) Değişiklik olduğundarender'ı elle çağırmak zorunda olmanın yarattığı bir rahatsızlık var, ama öte yandan değişken değişimini otomatik algılayıp örtük davranışlar sergilemesindense, açık bir çağrının yardımcı olduğu yönleri de var. Sonuçta bunlar operasyon araçları olduğu için, farklı ortamlara uyum sağlamak öncelik açısından daha düşük; belki de bu yüzden bana böyle gelmiş olabilir.Hacker News görüşleri
Zaten ağır bir framework kullanıyorduk, birinin özgeçmişine bir satır daha eklemek için Lit’i de eklemesi büyük bir yüktü
Shadow DOM özellikle erişilebilirlik (A11y) sorunlarını daha da ağırlaştırdı.
idkapsamı ayrılıncalabel-for,describe-bygibi bağlantılar bozuldu ve epey uğraştıkTabii bunun bir kısmı da ekibimizin beceri eksikliği sorunuydu
Stil kapsamlanıyor ama yazı tipi boyutu gibi kritik kısımlar istisna olduğu için, her değiştirmede küçük regresyon hataları çıkmaya devam etti
DX de ciddi biçimde düştü; araçların iyileşmesini umuyorum ama şu an sadece yorucu bir durum
Aslında daha yaygın olan, sadece yeni bir şeyi denemek istediği için pek gerekçelendirmeden devreye almak gibi görünüyor
Karmaşık uygulamalarda iç içe geçmiş bileşenler etkileşirken iyi çalıştı; React’e benziyor ama çok daha tarayıcıya özgü yerel, daha az boilerplate içeriyor ve render da daha hızlı
Lit’in neden daha popüler olmadığını anlayamayacak kadar memnunum
Temel işlevler şaşırtıcı derecede basit ve büyük ölçüde platform API’lerine dayanıyor
Bu yüzden herkes kendisi uygulayabilir; bence bu sadelik çok değerli
Bu arada yaptığım alternatif uygulama: https://github.com/ruphin/lite-html
lit-htmlgerçekten çok kullanışlı; neredeyse tüm kişisel projelerimde kullanıyorumCDN’den doğrudan çağırıp build adımı olmadan deneyebilmek de büyük avantaj
Diğer framework’ler kadar ağır değil; sanki sadece Vanilla JS + HTML kullanıyormuşsunuz gibi, bilişsel yük neredeyse yok
Shadow DOM, temelde bileşen içi DOM’u ayıran özel bir ağaçtır
Bu sayede slot kavramı mümkün oluyor ve gerçekten birleştirilebilir bileşenler yapılabiliyor
Sorun şu ki stil kapsülleme, mevcut sistemlerle entegrasyonda büyük bir engel hâline geliyor
Bu yüzden Open Styleable Shadow Roots adında bir öneri sundum; dış stilin içeri akmasına izin verirken slot’ları koruyan bir yaklaşım. Hâlâ tarayıcı üreticilerini ikna etmeye çalışıyorum
Bununla ilgili yazdığım bir yazı da var: https://medium.com/gitconnected/getting-started-with-web-com...
Bazen neden daha yaygın kullanılmadığını ben de merak ediyorum
Başlangıçta Backbone.js tabanlıydı;
lit-html→lit-element→litşeklinde kademeli olarak değiştirdikŞimdi
<converse-root />adlı bir Web Component olarak sunuluyor; bu sayede React gibi diğer framework’lerle de iyi entegre oluyorGitHub: https://github.com/conversejs/converse.js / Demo: https://chat.conversejs.org/
Sunucuda JSX benzeri bir şablon sistemi kullanmak yeterince konforlu; istemci tarafı da sadece JS olduğu için yükseltme kaygısı olmuyor
Ancak yerel API’ler fazla düşük seviyeli, bu yüzden DX zayıf; Lit bunun üstüne deklaratif reaktivite ekliyor
Elle yapınca can sıkıcı olan kısımları temiz biçimde çözüyor
htmltemplate literal’ı ile JSX arasında büyük bir fark hissetmedimHatta JSX, derleme aşaması gerektirdiği için daha uğraştırıcı
Başta bağımlılıksız bir ortamda Web Components’i kendim yapmıştım, sonra LitElement’e geçince çok daha rahat ettiğimi gördüm
Ancak Shadow DOM varsayılan olsa da bazen daha fazla sorun çıkarıyor; bu yüzden artık Shadow DOM olmadan LitElement kullanıyorum
En büyük avantajı, istikrarlı bir temel üzerinde durması
Yerel Web Components tüm tarayıcılarda istikrarlı şekilde desteklendiği için framework değiştirme riski olmadan geliştirmeye odaklanabiliyorsunuz
Keşke daha fazla ekip denese
Bu arada Lit’i ele alan HTTP 203 videosunu da öneririm
Angular fazla ağır, React ise eski tarayıcı kısıtlarına göre tasarlanmış olduğundan bugün daha çok ataletle ayakta duruyor gibi geliyor
Angular’ın boilerplate’i ya da React hook’larının karmaşıklığına kıyasla çok daha sezgisel
Ama ne yazık ki popüler olamadı
Aslında
+ Web Componentsbirleşiminin yeterli olduğunu düşünüyorumAma Vue yerine bunları Lit ile yeniden yazmanın ne gibi bir avantajı olacağını merak ediyorum
Vue 3’ün ref/reactive durum yönetimi güçlü ve DOM’a bağlı olmadan test edilebiliyor
Lit’in reaktivitesi widget düzeyinde; bu yüzden güncelleme tetikleyicilerini kendiniz yönetmeniz gerekiyor
Vue’nun yaşam döngüsü basitken, Lit’te birden fazla callback’i takip etmek gerekiyor; bu da hata üretmeye daha açık
Özel bir neden yoksa özellik geliştirmeye odaklanmak daha iyi; teknoloji yığınını değiştirmenin kullanıcıya neredeyse hiç etkisi olmuyor
Vue bir framework olduğu için daha fazla özellik sunar, Lit ise yerel API’lere daha yakın bir uygulama yaklaşımı benimser
Vue build gerektirir ama Lit çalışma zamanında yükleme ile kullanılabilir
Vue başka hedeflere de derlenebilirken, Lit yalnızca Web Components’e odaklandığı için daha temizdir
Sonuçta en önemlisi ekibin daha hâkim olduğu teknolojiyi kullanması
Tüketici iç uygulamayla ilgilenmez; boyut ve API önemlidir
Zaten başkaları da kendi ortamlarına uygun adaptörler yapıp kullanacaktır