Apabila mempelajari prinsip CSS asas, seseorang diajar untuk menulis gaya modular, boleh diguna semula dan deskriptif untuk memastikan kebolehselenggaraan. Tetapi apabila pembangun terlibat dengan aplikasi dunia sebenar, selalunya terasa mustahil untuk menambah ciri UI tanpa gaya bocor ke kawasan yang tidak diingini. Isu ini sering menjadi bola salji menjadi gelung pemenuhan diri; gaya yang secara teorinya merangkumi satu elemen atau kelas mula muncul di tempat yang tidak sesuai. Ini memaksa pembangun untuk mencipta pemilih yang lebih khusus untuk mengatasi gaya yang bocor, yang kemudiannya secara tidak sengaja menimpa gaya global, dan sebagainya. Konvensyen nama kelas tegar, seperti BEM, adalah satu penyelesaian teori untuk isu ini. Metodologi BEM (Block, Element, Modifier) ​​ialah cara sistematik untuk menamakan kelas CSS untuk memastikan kebolehgunaan semula dan struktur dalam fail CSS. Penamaan konvensyen seperti ini boleh mengurangkan beban kognitif dengan memanfaatkan bahasa domain untuk menerangkan elemen dan keadaannya, dan jika dilaksanakan dengan betul, boleh menjadikan gaya untuk aplikasi besar lebih mudah dikekalkan. Di dunia nyata, bagaimanapun, ia tidak selalu berfungsi seperti itu. Keutamaan boleh berubah, dan dengan perubahan, pelaksanaan menjadi tidak konsisten. Perubahan kecil pada struktur HTML boleh memerlukan banyak semakan nama kelas CSS. Dengan aplikasi bahagian hadapan yang sangat interaktif, nama kelas yang mengikuti corak BEM boleh menjadi panjang dan sukar digunakan (mis., app-user-overview__status--is-authenticating), dan tidak mematuhi peraturan penamaan sepenuhnya memecahkan struktur sistem, dengan itu menafikan faedahnya. Memandangkan cabaran ini, tidak hairanlah pembangun telah beralih kepada rangka kerja, Tailwind menjadi rangka kerja CSS yang paling popular. Daripada cuba melawan apa yang kelihatan seperti perang kekhususan yang tidak boleh dimenangi antara gaya, lebih mudah untuk menyerah pada Cascade CSS dan menggunakan alat yang menjamin pengasingan lengkap. Pembangun Lebih Bersandar Pada Utiliti Bagaimanakah kita tahu bahawa sesetengah pembangun berminat untuk mengelakkan gaya berlatarkan? Ini adalah kebangkitan alat bahagian hadapan "moden" — seperti rangka kerja CSS-dalam-JS — direka khusus untuk tujuan itu. Bekerja dengan gaya terpencil yang berskop ketat kepada komponen tertentu boleh kelihatan seperti menghirup udara segar. Ia menghilangkan keperluan untuk menamakan sesuatu — masih merupakan salah satu tugas bahagian hadapan yang paling dibenci dan memakan masa — dan membolehkan pembangun menjadi produktif tanpa memahami sepenuhnya atau memanfaatkan faedah warisan CSS. Tetapi membuang CSS Cascade datang dengan masalahnya sendiri. Sebagai contoh, mengarang gaya dalam JavaScript memerlukan konfigurasi binaan yang berat dan selalunya membawa kepada gaya yang janggal bercampur dengan penanda komponen atau HTML. Daripada mempertimbangkan konvensyen penamaan dengan teliti, kami membenarkan alat binaan untuk menjana autogenerasi pemilih dan pengecam untuk kami (cth., .jsx-3130221066), yang memerlukan pembangun untuk mengikuti satu lagi bahasa pseudo dalam dirinya sendiri. (Seolah-olah beban kognitif untuk memahami perkara yang dilakukan oleh semua useEffects komponen anda belum mencukupi!) Mengabstraksi lebih lanjut tugas menamakan kelas kepada perkakas bermakna penyahpepijatan asas selalunya terhad kepada versi aplikasi tertentu yang disusun untuk pembangunan, dan bukannya memanfaatkan ciri penyemak imbas asli yang menyokong penyahpepijatan langsung, seperti Alat Pembangun. Ia hampir seperti kita perlu membangunkan alat untuk menyahpepijat alatan yang kita gunakan untuk mengabstrakkan perkara yang telah disediakan oleh web — semuanya demi melarikan diri daripada "sakit" menulis CSS standard. Nasib baik, ciri CSS moden bukan sahaja menjadikan penulisan CSS standard lebih fleksibel tetapi juga memberikan pembangun seperti kami kuasa yang lebih besar untuk mengurus lata dan menjadikannya berfungsi untuk kami. Lapisan Lata CSS ialah contoh yang bagus, tetapi terdapat satu lagi ciri yang mendapat kekurangan perhatian yang mengejutkan — walaupun ia berubah sekarang kerana ia baru-baru ini menjadi serasi Baseline. CSS @scope At-Rule Saya menganggap CSS @scope at-rule sebagai ubat yang berpotensi untuk jenis kebimbangan yang disebabkan oleh kebocoran gaya yang telah kami bincangkan, yang tidak memaksa kami untuk menjejaskan kelebihan web asli untuk abstraksi dan perkakas binaan tambahan. "Peraturan @scope CSS membolehkan anda memilih elemen dalam subpokok DOM tertentu, menyasarkan elemen dengan tepat tanpa menulis pemilih yang terlalu khusus yang sukar untuk ditindih dan tanpa menggabungkan pemilih anda terlalu ketat pada struktur DOM." - MDN

Dalam erti kata lain, kita boleh bekerja dengan gaya terpencil dalam keadaan tertentu tanpa mengorbankan warisan, melata atau pengasingan asas kebimbanganyang telah menjadi prinsip panduan jangka panjang pembangunan bahagian hadapan. Selain itu, ia mempunyai liputan penyemak imbas yang sangat baik. Malah, Firefox 146 menambah sokongan untuk @scope pada bulan Disember, menjadikannya Baseline serasi buat kali pertama. Berikut ialah perbandingan mudah antara butang menggunakan corak BEM berbanding peraturan @scope:

You May Also Like

Enjoyed This Article?

Get weekly tips on growing your audience and monetizing your content — straight to your inbox.

No spam. Join 138,000+ creators. Unsubscribe anytime.

Create Your Free Bio Page

Join 138,000+ creators on Seemless.

Get Started Free