Atraskite CSS @use galią moduliškumui, priklausomybių valdymui ir geresnei kodo organizacijai. Išmokite geriausių praktikų, pažangių technikų ir realių pavyzdžių.
CSS @use įsisavinimas: modernus požiūris į priklausomybių valdymą
Nuolat kintančiame žiniatinklio kūrimo pasaulyje švaraus, organizuoto ir mastelį atitinkančio CSS palaikymas yra itin svarbus. Didėjant projektų sudėtingumui, tradiciniai CSS priklausomybių valdymo metodai gali tapti sudėtingi ir linkę į konfliktus. Čia pasirodo @use – galinga funkcija, pristatyta CSS Modules Level 1, siūlanti modernų sprendimą priklausomybių deklaravimui ir moduliškumui jūsų stilių aprašuose. Šis straipsnis pateikia išsamų vadovą, kaip suprasti ir efektyviai naudoti @use, suteikiantį jums galimybę kurti lengviau prižiūrimas ir efektyvesnes CSS architektūras.
Kas yra CSS @use?
@use yra CSS @-taisyklė, kuri leidžia importuoti ir įtraukti CSS taisykles, kintamuosius, „mixins“ ir funkcijas iš kitų stilių aprašų. Skirtingai nuo tradicinio @import, @use sukuria vardų erdvę (angl. namespace) importuotiems stiliams, taip išvengiant pavadinimų susidūrimų ir skatinant geresnę kodo organizaciją. Ji taip pat suteikia daugiau kontrolės, kas yra atskleidžiama iš importuoto modulio.
Galvokite apie @use kaip apie būdą kurti pakartotinai naudojamus CSS komponentus, kurių kiekvienas yra įkapsuliuotas savo modulyje. Šis modulinis požiūris supaprastina kūrimą, pagerina palaikymą ir sumažina netikėtų stiliaus konfliktų riziką.
Kodėl naudoti @use vietoj @import?
Nors @import daugelį metų buvo pagrindinis CSS elementas, jis turi keletą apribojimų, kuriuos išsprendžia @use:
- Globali apimtis:
@importįterpia stilius tiesiai į globalią apimtį, didindama pavadinimų susidūrimų riziką ir apsunkindama stilių kilmės stebėjimą. - Našumo problemos:
@importgali neigiamai paveikti našumą, nes verčia naršyklę nuosekliai atsisiųsti kelis stilių aprašus. - Vardų erdvių nebuvimas:
@importnesiūlo jokio integruoto mechanizmo vardų erdvėms, o tai gali sukelti konfliktų naudojant kelias bibliotekas ar karkasus.
@use įveikia šiuos apribojimus:
- Kuriant vardų erdves:
@useįkapsuliuoja importuotus stilius vardų erdvėje, išvengiant pavadinimų susidūrimų ir gerinant kodo aiškumą. - Pagerintas našumas: Nors našumo privalumai nėra tokie dramatiški kaip su kitomis moderniomis CSS technikomis (pavyzdžiui, HTTP/2 push),
@useskatina geresnę organizaciją, o tai netiesiogiai veda prie efektyvesnių stilių aprašų. - Kontrolė ties atskleidimu:
@useleidžia pasirinktinai atskleisti kintamuosius, „mixins“ ir funkcijas, suteikiant smulkesnę kontrolę, kas yra prieinama kitiems moduliams.
Pagrindinė @use sintaksė
Pagrindinė @use @-taisyklės sintaksė yra paprasta:
@use 'kelias/iki/stiliu_apraso';
Ši eilutė importuoja stilių aprašą, esantį kelias/iki/stiliu_apraso, ir sukuria vardų erdvę pagal failo pavadinimą (be plėtinio). Pavyzdžiui, jei stilių aprašas pavadintas _variables.scss, vardų erdvė bus variables.
Norėdami pasiekti kintamuosius, „mixins“ ar funkcijas iš importuoto modulio, naudojate vardų erdvę, po kurios eina taškas ir elemento pavadinimas:
.element {
color: variables.$primary-color;
@include variables.responsive(tablet) {
font-size: 1.2rem;
}
}
Vardų erdvės ir pseudonimai
Vienas iš pagrindinių @use privalumų yra galimybė kurti vardų erdves. Pagal numatytuosius nustatymus vardų erdvė yra gaunama iš failo pavadinimo. Tačiau galite pritaikyti vardų erdvę naudodami raktinį žodį as:
@use 'kelias/iki/stiliu_apraso' as pasirinktine-vardu-erdve;
Dabar galite pasiekti importuotus elementus naudodami pasirinktine-vardu-erdve:
.element {
color: pasirinktine-vardu-erdve.$primary-color;
}
Taip pat galite naudoti as *, kad importuotumėte visus elementus be vardų erdvės, efektyviai imituodami @import elgesį. Tačiau tai paprastai nerekomenduojama, nes panaikina vardų erdvių privalumus ir gali sukelti pavadinimų susidūrimus.
@use 'kelias/iki/stiliu_apraso' as *; // Nerekomenduojama
Konfigūravimas su @use
@use leidžia konfigūruoti kintamuosius importuotame modulyje naudojant raktinį žodį with. Tai ypač naudinga kuriant pritaikomas temas ar komponentus.
Pirmiausia, importuojamame modulyje apibrėžkite kintamuosius su !default vėliavėle:
/* _variables.scss */
$primary-color: #007bff !default;
$secondary-color: #6c757d !default;
Tada, naudodami modulį, konfigūruokite šiuos kintamuosius:
@use 'variables' with (
$primary-color: #ff0000,
$secondary-color: #00ff00
);
Dabar variables modulis naudos #ff0000 kaip pagrindinę spalvą ir #00ff00 kaip antrinę spalvą. Tai leidžia lengvai pritaikyti komponentų išvaizdą nekeičiant pradinio modulio.
Pažangios technikos su @use
Sąlyginiai importai
Nors @use tiesiogiai nepalaiko sąlyginių importų, pagrįstų medijos užklausomis ar kitomis sąlygomis, panašų funkcionalumą galite pasiekti naudodami CSS kintamuosius ir JavaScript. Pavyzdžiui, galite apibrėžti CSS kintamąjį, kuris nurodo dabartinę temą ar įrenginio tipą, ir tada naudoti JavaScript, kad dinamiškai įkeltumėte atitinkamą stilių aprašą su @use.
„Mixins“ ir funkcijos
@use yra ypač galingas, kai derinamas su „mixins“ ir funkcijomis. Galite sukurti pakartotinai naudojamus „mixins“ ir funkcijas atskiruose moduliuose, o tada juos importuoti į savo komponentus naudojant @use. Tai skatina kodo pakartotinį naudojimą ir mažina dubliavimą.
Pavyzdžiui, galite sukurti „mixin“ adaptyviai tipografijai:
/* _typography.scss */
@mixin responsive-font-size($min-size, $max-size, $min-width, $max-width) {
font-size: calc(
#{$min-size} + (#{$max-size} - #{$min-size}) * ((100vw - #{$min-width}) / (#{$max-width} - #{$min-width}))
);
}
Tada importuokite šį „mixin“ į savo komponentą ir naudokite jį:
/* _component.scss */
@use 'typography';
.title {
@include typography.responsive-font-size(1.2rem, 2.4rem, 768px, 1200px);
}
CSS kintamieji ir temos
@use sklandžiai veikia su CSS kintamaisiais, leidžiančiais kurti pritaikomas temas ir komponentus. Galite apibrėžti CSS kintamuosius atskiruose moduliuose ir tada juos importuoti į savo komponentus naudojant @use. Tai leidžia lengvai perjungti skirtingas temas arba pritaikyti komponentų išvaizdą pagal vartotojo pageidavimus.
Geriausios @use naudojimo praktikos
- Organizuokite savo stilių aprašus: Padalinkite savo CSS į loginius modulius pagal funkcionalumą ar komponento tipą.
- Naudokite prasmingas vardų erdves: Rinkitės vardų erdves, kurios tiksliai atspindi modulio paskirtį.
- Konfigūruokite kintamuosius su
with: Naudokite raktinį žodįwith, kad konfigūruotumėte kintamuosius ir kurtumėte pritaikomus komponentus. - Venkite
as *: Venkite naudotias *, nes tai panaikina vardų erdvių privalumus ir gali sukelti pavadinimų susidūrimus. - Dokumentuokite savo modulius: Aiškiai dokumentuokite savo modulius, paaiškindami kiekvieno kintamojo, „mixin“ ir funkcijos paskirtį.
- Testuokite savo kodą: Kruopščiai testuokite savo kodą, kad įsitikintumėte, jog jūsų moduliai veikia kaip tikėtasi ir nėra pavadinimų susidūrimų.
Praktiniai pavyzdžiai
1 pavyzdys: Globalus stilių aprašas
Globaliame stilių apraše (pvz., _global.scss) gali būti globalūs kintamieji ir stiliai, naudojami visoje svetainėje. Tai gali apimti bendrą spalvų schemą, šriftus, tarpų taisykles ir kt.
/* _global.scss */
$primary-color: #29ABE2;
$secondary-color: #F2F2F2;
$font-family: 'Arial', sans-serif;
body {
font-family: $font-family;
background-color: $secondary-color;
color: $primary-color;
}
Tada naudokite tai kituose stilių aprašuose taip:
@use 'global';
.header {
background-color: global.$primary-color;
color: white;
}
2 pavyzdys: Mygtukų komponentai
Sukurkite konkretų modulį mygtukų komponentų stiliui (pvz., _buttons.scss) su variacijomis, tokiomis kaip pirminiai ir antriniai mygtukai.
/* _buttons.scss */
$base-button-padding: 10px 20px;
$base-button-font-size: 16px;
@mixin base-button-style {
padding: $base-button-padding;
font-size: $base-button-font-size;
border: none;
cursor: pointer;
}
.button-primary {
@include base-button-style;
background-color: blue;
color: white;
}
.button-secondary {
@include base-button-style;
background-color: gray;
color: white;
}
Naudokite šį mygtukų modulį kituose stilių aprašuose:
@use 'buttons';
.submit-button {
@extend .buttons.button-primary; /* Išplečiant bazinės klasės stilius */
margin-top: 10px;
}
3 pavyzdys: Formos stilius
Sukurkite formos stiliui skirtą modulį (pvz., _forms.scss).
/* _forms.scss */
$input-border-color: #ccc;
$input-focus-color: #66afe9;
input[type="text"], input[type="email"], textarea {
padding: 8px;
margin-bottom: 10px;
border: 1px solid $input-border-color;
border-radius: 4px;
&:focus {
border-color: $input-focus-color;
outline: none;
}
}
Tada, naudokite jį:
@use 'forms';
.contact-form {
width: 50%;
margin: 0 auto;
input[type="submit"] {
background-color: green;
color: white;
padding: 10px 15px;
border: none;
border-radius: 4px;
cursor: pointer;
}
}
Migracijos strategija iš @import į @use
Perėjimas nuo @import prie @use esamame projekte gali būti laipsniškas procesas. Štai siūloma migracijos strategija:
- Nustatykite globalius stilius: Pradėkite nuo globalių stilių aprašų, kurie yra importuojami keliose vietose, nustatymo. Tai geri kandidatai pradinei migracijai.
- Pakeiskite
@importį@use: Pakeiskite@importteiginius į@use, sukurdami vardų erdves importuotiems stiliams. - Atnaujinkite nuorodas: Atnaujinkite visas nuorodas į importuotus stilius, kad būtų naudojamos naujos vardų erdvės.
- Išspręskite pavadinimų susidūrimus: Išspręskite visus pavadinimų susidūrimus, atsiradusius dėl vardų erdvių įvedimo.
- Kruopščiai testuokite: Kruopščiai testuokite savo kodą, kad įsitikintumėte, jog migracija neįvedė jokių regresijų.
- Refaktorizuokite palaipsniui: Toliau refaktorizuokite savo kodą, palaipsniui perkeldami daugiau stilių aprašų naudoti
@use.
CSS @forward: Modulių atskleidimas
Kartu su @use, @forward yra dar vienas galingas įrankis CSS priklausomybėms valdyti. @forward @-taisyklė leidžia atskleisti kintamuosius, „mixins“ ir funkcijas iš kitų modulių, tiesiogiai jų neimportuojant į dabartinį modulį. Tai naudinga kuriant viešą API jūsų moduliams.
Pavyzdžiui, galite sukurti index.scss failą, kuris persiunčia visus kintamuosius, „mixins“ ir funkcijas iš kitų modulių:
/* index.scss */
@forward 'variables';
@forward 'mixins';
Dabar galite importuoti index.scss failą į savo komponentus ir pasiekti visus kintamuosius, „mixins“ ir funkcijas iš persiųstų modulių:
@use 'index';
.element {
color: index.$primary-color;
@include index.responsive(tablet) {
font-size: 1.2rem;
}
}
@forward taip pat gali būti naudojamas su raktiniais žodžiais hide ir show, kad pasirinktinai atskleistumėte elementus iš persiųstų modulių:
/* index.scss */
@forward 'variables' hide $private-variable;
@forward 'mixins' show responsive;
Šiame pavyzdyje $private-variable nebus atskleistas iš variables modulio, o iš mixins modulio bus atskleistas tik responsive „mixin“.
Naršyklių palaikymas ir „Polyfills“
@use yra palaikomas moderniose naršyklėse, kurios palaiko CSS Modules Level 1. Tačiau senesnės naršyklės gali jo nepalaikyti. Siekiant užtikrinti suderinamumą su senesnėmis naršyklėmis, galite naudoti CSS pirminio apdorojimo įrankį, pvz., Sass ar Less, kuris automatiškai transformuoja @use teiginius į suderinamą CSS kodą.
CSS priklausomybių valdymo ateitis
@use yra reikšmingas žingsnis į priekį CSS priklausomybių valdyme. Suteikdama vardų erdves, kontrolę ties atskleidimu ir patobulintas konfigūracijos parinktis, @use suteikia kūrėjams galimybę kurti modulines, lengviau prižiūrimas ir mastelį atitinkančias CSS architektūras. Toliau evoliucionuojant CSS, galime tikėtis tolesnių patobulinimų ir naujovių priklausomybių valdyme, todėl kurti tvirtas ir efektyvias žiniatinklio programas taps dar lengviau nei bet kada anksčiau.
Globalūs aspektai ir prieinamumas
Įgyvendinant @use (ir CSS apskritai) globaliame kontekste, būtina atsižvelgti į prieinamumą, internacionalizaciją (i18n) ir lokalizaciją (l10n). Štai keletas patarimų:
- Kalbai būdingi stiliai: Naudokite CSS kintamuosius, kad valdytumėte kalbai būdingus stilius, tokius kaip šriftų šeimos ir dydžiai. Tai leidžia lengvai pritaikyti stilius skirtingoms kalboms ir rašto sistemoms. Apsvarstykite loginių savybių ir verčių naudojimą (pvz.,
margin-inline-startvietojmargin-left) geresniam kalbų, rašomų iš dešinės į kairę, palaikymui. - Prieinamumas: Užtikrinkite, kad jūsų CSS stiliai būtų prieinami vartotojams su negalia. Naudokite semantinius HTML elementus, užtikrinkite pakankamą spalvų kontrastą ir venkite remtis vien spalva informacijai perteikti. Išbandykite savo svetainę su pagalbinėmis technologijomis, pavyzdžiui, ekrano skaitytuvais, kad nustatytumėte ir išspręstumėte bet kokias prieinamumo problemas.
- Kultūriniai aspektai: Būkite atidūs kultūriniams skirtumams kurdami savo svetainę. Venkite naudoti vaizdus, spalvas ar simbolius, kurie tam tikrose kultūrose gali būti įžeidžiantys ar netinkami.
- Adaptyvus dizainas globaliai auditorijai: Užtikrinkite, kad jūsų svetainė būtų adaptyvi ir prisitaikytų prie skirtingų ekrano dydžių ir įrenginių. Apsvarstykite galimybę naudoti peržiūros srities vienetus (vw, vh, vmin, vmax) lankstiems maketams, kurie proporcingai keičiasi priklausomai nuo ekrano dydžio.
Išvada
@use yra galingas įrankis, skirtas valdyti CSS priklausomybes ir kurti modulines, lengvai prižiūrimas ir mastelį atitinkančias CSS architektūras. Suprasdami @use principus ir laikydamiesi geriausių praktikų, galite žymiai pagerinti savo CSS kodo organizaciją ir efektyvumą. Nesvarbu, ar dirbate su mažu asmeniniu projektu, ar su didele įmonės programa, @use gali padėti jums sukurti geresnį CSS ir suteikti geresnę vartotojo patirtį.