Modul SASS
Artikel ini menerangkan modul SASS.
Kami menerangkan cara memodularkan SASS menggunakan @use dan @forward, dan bagaimana untuk menggunakan semula pembolehubah, mixin, fungsi, tetapan tema, dan API awam.
YouTube Video
Modul SASS
Sistem modul SASS membantu untuk menentukan skop gaya dengan jelas dan menyediakan reka bentuk yang mudah untuk digunakan semula dan diselenggara.
Konsep Asas Modul
Modul SASS menyelesaikan masalah pencemaran ruang nama global dan pergantungan yang tidak jelas yang wujud pada @import lama. Setiap fail dimuatkan sebagai modul dengan ruang nama sendiri, dan hanya item yang dieksport secara jelas boleh diakses dari fail lain.
Contoh Struktur Fail
Pertama, berikut ialah contoh struktur projek yang realistik. Di bawah ialah contoh sistem reka bentuk yang kecil.
1styles/
2├─ _variables.scss
3├─ _mixins.scss
4├─ _functions.scss
5├─ components/
6│ ├─ _button.scss
7│ └─ _card.scss
8├─ utilities/
9│ └─ _helpers.scss
10└─ main.scss- Struktur ini memudahkan pemodularan serta ujian dan penggantian bahagian.
- Fail separa mempunyai garis bawah pada permulaan nama fail.
Asas @use
@use memuatkan modul dan menyediakan ruang nama. Ini mengelak perlanggaran nama dan menjelaskan modul sumber.
1// _variables.scss
2$primary-color: #0a74da;
3$padding-base: 12px;- Fail ini adalah ringkas dan hanya mentakrifkan pembolehubah. Pembolehubah yang diterbitkan dari modul boleh dirujuk terus menggunakan
@use.
1// main.scss
2@use 'variables';
3
4.example {
5 color: variables.$primary-color;
6 padding: variables.$padding-base;
7}- Di sini, modul
variablesdirujuk menggunakan ruang namavariables.. Pendekatan ini menjadikan asal-usul setiap item jelas.
Memendekkan atau Mengalias Ruang Nama
Penggunaan as membolehkan anda memendekkan ruang nama.
1@use 'variables' as vars;
2
3.btn {
4 color: vars.$primary-color;
5}- Ini adalah contoh mengimport
variablesmenggunakan alias singkatvars. Pilih nama berdasarkan keutamaan anda sama ada keterbacaan atau kemudahan menaip.
Definisi Mixin
Mixins dan fungsi juga boleh ditakrif dan digunakan dalam modul. Menjaga konsistensi ulasan dengan konvensyen projek membantu meningkatkan kejelasan.
1// _mixins.scss
2// Create a simple responsive container mixin
3@mixin container($max-width: 1200px) {
4 width: 100%;
5 margin-left: auto;
6 margin-right: auto;
7 max-width: $max-width;
8}- Fail ini mentakrifkan mixin untuk kontena. Ia menerima argumen dan menyediakan nilai lalai.
1// main.scss
2@use 'mixins' as m;
3
4.wrapper {
5 @include m.container(1000px);
6}- Ini adalah contoh penggunaan mixin dengan
@include.
Mendefinisikan Fungsi
Fungsi digunakan untuk mengembalikan nilai, dan boleh ditakrif serta digunakan semula dalam modul. Dengan membungkus pengiraan nilai reka bentuk dalam fungsi, gaya menjadi lebih stabil dan mudah diselenggara.
1// _functions.scss
2@use 'sass:math';
3
4// Create a simple px-to-rem converter function
5@function to-rem($px, $base: 16) {
6 @return math.div($px, $base) * 1rem;
7}- Fail ini mendefinisikan satu fungsi yang menukar nilai piksel kepada rem. Nilai asas lalai juga ditetapkan.
1// main.scss
2@use 'functions' as f;
3
4.title {
5 font-size: f.to-rem(24);
6}- Ini adalah contoh memanggil fungsi melalui
@usedan menggunakan hasilnya pada gaya.
Eksport Modul dan @forward (Reka Bentuk API)
Apabila anda ingin mendedahkan beberapa fail dalaman secara luaran, anda boleh menggunakan @forward untuk mencipta 'API awam'.
1// _index.scss (module entry)
2@forward 'variables';
3@forward 'mixins';
4@forward 'functions';- Beberapa fail dalaman boleh dikumpulkan sebagai satu titik masuk, yang menyediakan API awam. Ini membolehkan pengguna mengakses semua ciri yang diperlukan dengan hanya mengimport satu titik masuk.
1// main.scss
2@use 'index' as ds; // ds = design system
3
4.button {
5 color: ds.$primary-color;
6 @include ds.container();
7}- Kandungan
variablesdanmixinsboleh diakses secara kolektif melaluiindex.@forwardmenjadikanindexsebagai lapisan awam.
Mengawal API dengan pilihan show / hide pada @forward
Jika anda mahu mendedahkan hanya pembolehubah tertentu, gunakan pilihan show atau hide.
1// _variables.scss
2$internal-thing: 10px !default; // for internal use
3$primary-color: #0a74da !default;
4$secondary-color: #f5f5f5 !default;- Menambah
!defaultmembolehkan anda menerbitkan nilai yang boleh ditulis ganti.
1// _index.scss
2@forward 'variables' show $primary-color, $secondary-color;
3@forward 'mixins';- Dengan menggunakan
showbersama@forward, anda boleh menghadkan API yang didedahkan kepada elemen yang diperlukan sahaja. Pembolehubah dan fungsi yang digunakan secara dalaman tidak akan dapat dilihat dari luar.
Menjadikan Modul Berkonfigurasi (dengan with)
Jika anda menggunakan !default dalam modul, nilai boleh ditulis ganti menggunakan with di bahagian import.
1// _theme.scss
2$brand-color: #ff6600 !default;
3$radius: 4px !default;
4
5@mixin button-style() {
6 background-color: $brand-color;
7 border-radius: $radius;
8}- Modul dengan nilai lalai yang ditakrifkan menggunakan
!defaultboleh menerima konfigurasi melaluiwith.
1// main.scss
2@use 'theme' with (
3 $brand-color: #2288ff,
4 $radius: 8px
5);
6
7.my-btn {
8 @include theme.button-style();
9}withdalam@usemembolehkan pembolehubah lalai dalam modul ditulis ganti semasa import. Ini berguna untuk penukaran tema.- Perhatikan bahawa
withhanya berfungsi semasa import dan anda tidak boleh mengubah nilai itu kemudian.
Contoh Praktikal: Komponen Butang (Contoh Lengkap)
Mari kita cuba mereka bentuk gaya butang menggunakan modul. Mula-mula, asingkan pembolehubah dan mixins ke dalam modul masing-masing.
1// _variables.scss
2$btn-padding-y: 8px !default;
3$btn-padding-x: 16px !default;
4$btn-font-size: 14px !default;
5$btn-primary-bg: #0a74da !default;
6$btn-primary-color: #fff !default;- Pembolehubah lalai untuk butang ditakrifkan di sini. Mengguna
!defaultmembolehkan pengguna menulis ganti nilai-nilai ini.
1// _mixins.scss
2@use "variables" as v;
3
4@mixin btn-base() {
5 display: inline-flex;
6 align-items: center;
7 justify-content: center;
8 padding: v.$btn-padding-y v.$btn-padding-x;
9 font-size: v.$btn-font-size;
10 border: none;
11 cursor: pointer;
12}- Mixin asas untuk butang ditakrifkan di sini. Ia diasingkan untuk memudahkan penggunaan semula.
1// _button.scss
2@use 'variables' as v;
3@use 'mixins' as m;
4
5.button {
6 @include m.btn-base();
7 background: v.$btn-primary-bg;
8 color: v.$btn-primary-color;
9 border-radius: 4px;
10 transition: opacity 0.15s ease;
11 &:hover { opacity: 0.9; }
12}
13
14.button--large {
15 padding: calc(v.$btn-padding-y * 1.5) calc(v.$btn-padding-x * 1.5);
16 font-size: v.$btn-font-size * 1.25;
17}- Gaya butang dicipta menggunakan rujukan ruang nama dengan
@use. Satu varian ditakrifkan sebagai.button--large.
1// main.scss
2@use 'button'; // or @use 'index' that forwards button, variables, mixins- Dengan mengimport modul
button, anda boleh terus menggunakan gaya butang.
Pertukaran Tema (Menggunakan Beberapa Fail Tema)
Pertukaran tema boleh dilakukan melalui konfigurasi dengan with atau dengan mencipta modul berasingan dan menukar modul mana yang digunakan dengan @use.
1// themes/_light.scss
2$brand-color: #0a74da !default;1// themes/_dark.scss
2$brand-color: #111827 !default;- Takrifkan warna jenama dan tetapan lain dalam beberapa fail tema dan tukarkan semasa pembinaan atau import.
1// main.scss (light theme)
2@use 'theme' with ($brand-color: #0a74da);
3@use 'button';- Pilih tema sama ada dengan menggunakan
withatau dengan mengimport, contohnya,@use 'themes/light'semasa proses pembinaan.
Peribadi dan Awam (Awalan _ dan !default)
Dalam SASS, menambah garis bawah di permulaan nama fail menandakan ia sebagai partial. Namun, ketika mengurus kebolehlihatan eksport modul, gunakan show dan hide dengan @forward untuk mengawal apa yang dieksport.
Anda boleh menggunakan @forward untuk menyusun API awam dan menyembunyikan pelaksanaan dalaman dari luar.
Amalan Terbaik untuk Penggunaan Dunia Sebenar
Berikut adalah beberapa konsep asas yang berguna apabila menggunakan SASS dalam situasi sebenar. Semua garis panduan ini akan membantu mengurangkan kekeliruan semasa pembangunan dan memastikan kod anda teratur.
- Jika pembolehubah mungkin berubah sebagai sebahagian daripada tema, tambahkan
!default. Ini memudahkan pengguna untuk menimpa nilai. - Modul perlu dibahagikan mengikut tanggungjawab dan memfokus pada satu tujuan. Pengurusan menjadi lebih mudah dengan memisahkan pembolehubah, mixin dan komponen.
- Urus kandungan awam dengan
@forwarddan gunakanshowatauhidemengikut keperluan. Menentukan skop perkara yang awam membawa kepada reka bentuk yang lebih selamat. - Gunakan ruang nama untuk memperjelas modul mana setiap fungsi dimiliki. Ini mengelakkan kekeliruan dengan kod lain.
- Ingat bahawa
withhanya berfungsi semasa penggunaan@use. Oleh kerana anda tidak boleh mengubahnya kemudian, tetapkan konfigurasi semasa import. - Gunakan garis bawah pada permulaan nama fail untuk menjadikannya fail separa, supaya ia tidak dikompilasi secara individu. Ini memudahkan menggabungkan fail-fail ke dalam struktur yang lebih besar.
- Menyertakan contoh penggunaan dalam modul
indexmembantu ujian dan dokumentasi. Ia menjadi lebih mudah untuk pengguna memahami tingkah laku.
Mengingati perkara-perkara ini akan membantu anda mengurus projek besar dan mengekalkan kod yang mudah dibaca secara berkumpulan.
Ringkasan
Sistem modul SASS menyusun kod gaya melalui ruang nama, API awam, dan konfigurasi yang dipermudahkan. Penggunaan @use dan @forward dengan bijaksana memudahkan pembangunan berkumpulan, pertukaran tema, dan reka bentuk pustaka.
Anda boleh mengikuti artikel di atas menggunakan Visual Studio Code di saluran YouTube kami. Sila lihat juga saluran YouTube kami.