Ana Sayfa

Boss-CSS: Yeni Bir CSS-in-JS Kütüphanesi Neden Geliştirildi?

1 dk okuma

Yazılım geliştiricisi, 22 yıllık web kodlama deneyimiyle, CSS dünyasındaki çeşitli yaklaşımların evrimini ve karşılaştığı zorlukları ele alıyor. Ham CSS kullanımından başlayarak, LESS ve SASS ile dosya bölme ve iç içe geçirme özelliklerini keşfettiğini belirtiyor. Seçici çakışmalarını önlemek için Atomic CSS ve BEM gibi metodolojilere yönelirken, kod tabanında kullanımı basitleştirmek ve tree-shaking'i etkinleştirmek için CSS Modules'a geçtiğini anlatıyor. Geliştirici deneyimini (DX) iyileştirmek amacıyla CSS-in-JS çözümlerine yöneldiğini, ancak çalışma zamanı (runtime) performans sorunlarını çözmek için build-time statik çıkarma yöntemlerini kullandığını ifade ediyor. Tailwind'in hafifliği ve framework bağımsızlığı nedeniyle tercih edildiğini ancak onun da kendi içinde eksiklikleri olduğunu vurguluyor.

Yazar, geçmişte Grommet'in Box bileşenini çok beğenmesine rağmen, özel ihtiyaçlar için yine de özel stil nesneleri yazmak zorunda kaldığını belirtiyor. Kendi Box bileşenini oluşturma çabalarının da benzer şekilde karmaşıklaştığını ve tam CSS desteği sunmadığını, bu durumun yine özel stil ve sınıf adları gerektirdiğini anlatıyor. Yazarın daha önce geliştirdiği CCSS ve YouEye gibi kütüphanelerin, başlangıçta önemli değişiklikler getirse de zamanla kendi zayıf yönlerini ortaya koyduğunu ekliyor. Tailwind ile olan "aşk-nefret" ilişkisini dile getirerek, utility class'ların ve Atomic CSS'in temel fikrini sevdiğini, hatta 11 yıl önce SASS tabanlı kendi utility class framework'ünü oluşturduğunu belirtiyor. Ancak Tailwind'in CSS'in yalnızca bir alt kümesi olması ve her alanı kapsamaması nedeniyle, özel ihtiyaçlar için her zaman ayrı bir stil çözümü sürdürmek zorunda kaldığını ifade ediyor. Bu deneyimler, yazarın Boss-CSS adını verdiği yeni bir CSS-in-JS kütüphanesi geliştirmesine yol açmıştır.

İçgörü

Geliştirici, mevcut CSS çözümlerinin eksikliklerini ve Tailwind gibi popüler araçların sınırlamalarını aşmak için kendi CSS-in-JS kütüphanesini oluşturarak web geliştirme topluluğuna yeni bir alternatif sunuyor.

Kaynak