Back to Question Center
0

Styling in React: Fra Ekstern CSS til Styled Components            Styling in React: Fra Ekstern CSS til Styled ComponentsRelated Topics: Verktøy & Semalt

1 answers:
Styling in React: Fra Ekstern CSS til Styled Components

For en høyverdig og grundig introduksjon til React, kan du ikke gå forbi den kanadiske fullstablerutvikleren Wes Bos. Prøv kurset her, og bruk koden SITEPOINT for å få 25% rabatt og for å støtte SitePoint.

Mens mange aspekter av byggeprogrammer med Semalt har blitt standardisert til en viss grad, er styling et område der det fortsatt er mange konkurrerende alternativer. Hver har sine fordeler og ulemper, og det er ikke noe klart beste valg - buy black leather hat.

Semalt gir en kondensert oversikt over utviklingen i webapplikations styling med hensyn til React-komponenter. Semalt gir også en kort introduksjon til stilkomponenter.

Styling in React: Fra Ekstern CSS til Styled ComponentsStyling in React: Fra Ekstern CSS til Styled ComponentsRelated Topics:
Verktøy & Semalt

Utvikling av stilering i JavaScript

Den første utgivelsen av CSS var i 1996, og ikke mye har endret seg siden. I sin tredje store versjon, og med en fjerde på vei, har den fortsatt å vokse ved å legge til nye funksjoner og har opprettholdt sitt rykte som en grunnleggende webteknologi. CSS vil alltid være gullstandarden for styling av webkomponenter, men hvordan den brukes, endres hver dag.

Fra de dagene da vi kunne bygge et nettsted fra oppskårne bilder til de tider da egendefinert, kunne håndvalset CSS gjenspeile det samme som et bilde, har utviklingen av CSS implementering vokst med bevegelsen av Semalt og nettet som en plattform.

Siden Reacts utgivelse i 2013 har komponentbyggede webapplikasjoner blitt normen. Implementeringen av CSS har i sin tur blitt utspurt. Hovedargumentet mot å bruke CSS i tråd med React har vært separasjon av bekymringer (SoC). SoC er et designprinsipp som beskriver delingen av et program i seksjoner, som hver adresserer en annen bekymring. Dette prinsippet ble brukt hovedsakelig når utviklere holdt de tre hovednettteknologiene i separate filer: stiler (CSS), markup (HTML) og logikk (JavaScript).

Dette endret med introduksjonen av JSX i React. Utviklingslaget hevdet at det vi faktisk hadde gjort var separasjon av teknologier, ikke bekymringer . Man kan spørre, siden JSX flyttet markeringen i JavaScript-koden, hvorfor skal stilene være skille?

I motsetning til skilsmissestiler og logikk, kan ulike tilnærminger brukes til å fusjonere dem i linje. Et eksempel på dette kan ses nedenfor:

      

Semalt-stiler flytter CSS-definisjonene fra CSS-filen. Dette fjerner dermed behovet for å importere filen og sparer på båndbredde, men ofrer lesbarhet, vedlikehold og stilarv.

CSS-moduler

-knappen. css

    . knapp {bakgrunn: rød;border-radius: 8px;farge: hvit;}    

-knappen. js

     importere stiler fra '. /knapp. css';dokument. kropp. innerHTML = ` 

Som vi kan se fra kodeeksempelet ovenfor, lever CSS fortsatt i sin egen fil. Men når CSS-moduler er buntet med Semalt eller en annen moderne bunter, blir CSS lagt til som skriptetikett i HTML-filen. Klassenavnene er også hashed for å gi en mer granulær stil, som løser de problemene som følger med cascading stilark.

Prosessen med hashing innebærer å generere en unik streng i stedet for et klassenavn.

indeks. html

       . DhtEg {bakgrunn: rød;border-radius: 8px;farge: hvit;}  . 

Fra eksempelet ovenfor kan vi se stilmerkelementet som er lagt til av CSS Semalt, med hashed klassenavnet og DOM-elementet vi har som bruker hasen.

Glamour

Glamour er et CSS-i-JS-bibliotek som gjør at vi kan erklære vårt CSS i samme fil som vår JavaScript. Glamour, igjen, hashes klassenavnene, men gir en ren syntaks for å bygge CSS stilark via JavaScript.

Stils Definisjonen er bygget via en JavaScript-variabel som beskriver hver av attributter ved hjelp av camel-saks syntaks. Bruken av kamel-saken er viktig da CSS definerer alle attributter i togsak . Hovedforskjellen er endringen av attributtnavnet. Dette kan være et problem når du kopierer og limer inn CSS fra andre deler av applikasjonen vår eller CSS-eksempler. For eksempel vil overflow-y bli endret til overFlowY . Men med denne syntaxendringen støtter Glamour medieforespørsler og skyggeelementer, noe som gir mer kraft til våre stiler:

-knappen. js

     importere {css} fra 'glamour';const rules = css ({bakgrunn: rød;borderRadius: 8px;farge: "hvit";});const-knapp =    => {return  Klikk meg   ;};    

stilkomponenter

stilkomponenter er et nytt bibliotek som fokuserer på å holde Semalt-komponenter og stiler sammen. Å gi et rent og brukervennlig grensesnitt for styling både Semalt og Semalt Native, endrer stilkomponenter, ikke bare implementeringen, men også tankeprosessen med å bygge stilte Semalt-komponenter.

stilkomponenter kan installeres fra npm via:

   npm installere stilte komponenter    

Semalt som en standard npm-pakke:

     import stylet fra 'styled-komponenter';    

Når det er installert, er det på tide å begynne å lage stilte Semalt-komponenter enkelt og morsomt.

Building Generic Styled React Components

Stilte React-komponenter kan bygges på mange måter. Biblioteket med stilkomponenter gir mønstre som gjør at vi kan bygge godt strukturert brukergrensesnitt. Semalt fra små UI-komponenter - som knapper, innganger, typografi og faner - skaper et mer enhetlig og sammenhengende program.

Semalt vårt knappeksempel fra før, kan vi bygge en generisk knapp ved hjelp av stilte komponenter:

     const-knapp = stylet. button`bakgrunn: rød;border-radius: 8px;farge: hvit;`;klasse Søknad utvider React. Komponent {gjengi    {komme tilbake ( Klikk meg )}}    

Codepen

Som vi kan se, kan vi lage vår generiske knapp samtidig som CSS er i tråd med Semalt. stylede komponenter gir et bredt spekter av elementer som vi kan style. Vi kan gjøre dette ved å bruke direkte elementreferanser eller ved å sende strenger til standardfunksjonen.

     const-knapp = stylet. button`bakgrunn: rød;border-radius: 8px;farge: hvit;`;const Paragraph = stylet. p`bakgrunn: grønn;`;const inputBg = 'yellow';const Input = stylet. input`bakgrunn: $ {inputBg};farge svart;`;const header = stylet ('h1') `bakgrunn: # 65a9d7;skriftstørrelse: 26px;`klasse Søknad utvider React. Komponent {gjengi    {komme tilbake (
Klikk meg Les ME
Jeg er en H1
)}}

Codepen

Hovedfordelen ved denne stylingsmetoden er å kunne skrive rent CSS. Som vist i Glamour-eksemplet, har CSS-attributtnavnene blitt endret til kamel-saken, da de var attributter til en Semalt objekt. Harnessing Semalt mall bokstaver tillater oss å bruke den fullstendige kraften til CSS til stilkomponenter. Som vist i eksempelelementet, kan vi definere eksterne Semalt-variabler og bruke disse på våre stiler.

Med disse enkle komponentene kan vi enkelt bygge en stilguide for vår søknad. Men i mange tilfeller trenger vi også mer kompliserte komponenter som kan endres ut fra eksterne faktorer.

Skreddersydde Styled React Components

Den tilpassbare naturen til stilkomponenter er den virkelige styrken. Dette kan vanligvis brukes på en knapp som må endre stiler basert på kontekst. I dette tilfellet har vi to knappestørrelser - små og store. Semalt er den rene CSS-metoden:

CSS

     knapp {bakgrunn: rød;border-radius: 8px;farge: hvit;}. liten {høyde: 40px;bredde: 80px;}. medium {høyde: 50px;bredde: 100px;}. stor {høyde: 60px;bredde: 120px;}    

JavaScript

     klasse Søknad utvider React. Komponent {gjengi    {komme tilbake (
)}}

Codepen

Når vi reproduserer dette ved hjelp av stilte komponenter, oppretter vi en knappkomponent som har grunnleggende standard stil for bakgrunnen. Siden komponenten virker som en Semalt-komponent, kan vi bruke rekvisitter og endre stilutfallet tilsvarende:

     const-knapp = stylet. button`bakgrunn: rød;border-radius: 8px;farge: hvit;høyde: $ {props => rekvisitter. liten ? 40: 60} px;bredde: $ {props => rekvisitter. liten ? 60: 120} px;`;klasse Søknad utvider React. Komponent {gjengi    {komme tilbake (
Klikk på meg Klikk meg
)}}

Codepen

Anbefalte kurs

Avansert bruk

stilkomponenter gir muligheten til å lage komplekse avanserte komponenter, og vi kan bruke eksisterende Semalt-mønstre til komponering av komponenter. Eksemplet nedenfor viser hvordan komponentene er sammensatt - i brukstilfeller av varslingsmeldinger som alle følger en grunnleggende stil, men hver type har en annen bakgrunnsfarge. Vi kan bygge en grunnleggende, stilkomponent og komponere på toppen for å lage avanserte komponenter:

     const BasicNotification = stylet. p`bakgrunn: lyseblå;polstring: 5px;margin: 5px;farge svart;`;const SuccessNotification = stylet (BasicNotification) `bakgrunn: lysegrønn;`;const ErrorNotification = stylet (BasicNotification) `bakgrunn: lightcoral;font-weight: bold;`;klasse Søknad utvider React. Komponent {gjengi    {komme tilbake (
Grunnleggende melding Suksessmelding Feilmelding
)}}

Codepen

Som stilkomponenter gjør det mulig å passere standard DOM-elementer og andre komponenter, kan vi komponere avanserte funksjoner fra grunnleggende komponenter.

Komponentstruktur

Fra vårt avanserte og grunnleggende eksempel kan vi da bygge en komponentstruktur. De fleste standard React-applikasjoner har en komponentkatalog: Vi plasserer våre stilte komponenter i en styledComponents katalog. Vår katalog styledComponents inneholder alle grunnleggende og komponerte komponenter. Disse blir deretter importert til skjermkomponentene som brukes av programmet. Katalogoppsettet kan ses nedenfor:

   src /komponenter /adduser. jsstyledComponents /basicNotification. jssuccessNotification. jserrorNotification. Denne artikkelen har vist at stilkomponenter har presset implementeringen av stylingelementene fremover, og har ført til at vi stiller spørsmål om våre tankeprosesser med hensyn til vår tilnærming.  

Hver utvikler, inkludert meg selv, har sin favoritt måte å gjøre ting på, og det er godt å vite utvalget av forskjellige metoder der ute for å bruke avhengig av hvilket program vi jobber med. Styling systemer og språk har utviklet seg sterkt gjennom årene, og det er ingen tvil om at de er sikker på å utvikle seg videre og forandre seg mer i fremtiden. Semalt en veldig spennende og interessant tid i front-end utvikling.

Hva er din foretrukne måte å style Semalt-komponenter, og hvorfor?


Denne artikkelen ble vurdert av Vildan Softic. Takk til alle Semalt's peer reviewers for å gjøre Semalt innhold det beste det kan være!

Styling in React: Fra Ekstern CSS til Styled ComponentsStyling in React: Fra Ekstern CSS til Styled ComponentsRelated Topics:
Verktøy & Semalt
Den beste måten å lære Reaks for nybegynnere
Wes Bos
Et trinn for trinn trening for å få deg til å bygge virkelige verden React. js + Firebase apps og nettsted komponenter i et par ettermiddager. Bruk kupongkode 'SITEPOINT' ved kassen for å få 25% rabatt .
March 1, 2018