Sobes.tech
Middle

Projelerinde Vue bileşenlerinde CSS izolasyonunu nasıl organize ettiniz?

sobes.tech yapay zeka

AI'dan gelen yanıt

Proje ölçeğine ve gereksinimlere bağlı olarak çeşitli yaklaşımlar kullandım:

  1. Scoped CSS: Vue'da en yaygın yöntem. Stiller, otomatik olarak CSS seçicilerine ve DOM öğelerine benzersiz öznitelikler eklenerek yalnızca mevcut bileşenin öğelerine uygulanır.

    <template>
      <div class="container">
        Merhaba, Vue!
      </div>
    </template>
    
    <style scoped>
    /* Bu stil, bu bileşenin içinde sadece container sınıfına sahip div'e uygulanır */
    .container {
      color: blue;
    }
    </style>
    
  2. CSS Modülleri: Yerel CSS sınıfları oluşturmayı sağlar, bunlar otomatik olarak benzersiz isimlerle üretilir. JavaScript'te nesne olarak içe aktarılırlar. Stillerin açıkça lokalizasyonunu sağlarlar.

    <template>
      <div :class="$style.container">
        Merhaba, Modüller!
      </div>
    </template>
    
    <style module>
    /* 'container' sınıfı, derleme sırasında benzersiz bir isim alacaktır */
    .container {
      color: green;
    }
    </style>
    
  3. CSS-in-JS (Emotion veya Styled Components gibi kütüphanelerle eklentiler aracılığıyla): Stiller doğrudan JavaScript/TypeScript içinde yazılır. Güçlü izolasyon ve dinamik stiller sağlarlar, ancak paket boyutunu artırabilir ve karmaşıklık ekleyebilirler.

    // Koşullu kütüphane ile pseudocode örneği
    import styled from 'vue-styled-components'; // İçe aktarma örneği
    
    const StyledDiv = styled.div` // styled bileşeni oluşturma
      color: purple;
    `;
    
    export default {
      components: {
        StyledDiv,
      },
      template: `<styled-div>Merhaba, CSS-in-JS!</styled-div>`,
    };
    
    
  4. İsimlendirme Kuralları (BEM): Blok-Öğe-Modifikator gibi katı isimlendirme kuralları kullanılır. Çerçeve tarafından teknik izolasyon sağlamaz, ancak okunabilirliği ve öngörülebilirliği artırır.

Yöntem seçimi şu faktörlere bağlıydı:

  • Takımın büyüklüğü.
  • Bileşenlerin karmaşıklığı.
  • Stilin yeniden kullanılabilirliği ihtiyacı.
  • Projede benimsenen standartlar.

Genellikle, çoğu bileşende scoped kullanırdım çünkü basitliği ve verimliliği nedeniyle. Daha katı lokalizasyon veya dinamik sınıflar gerektiren durumlarda CSS Modülleri kullanılırdı. CSS-in-JS nadiren, genellikle zaten kullanılıyorsa veya açık bir ihtiyaç varsa tercih edilirdi. İsimlendirme kuralları her zaman diğer yaklaşımları tamamladı.