Back to Question Center
0

Styling in React: Fra eksterne CSS til Styled Components            Styling in React: Fra ekstern CSS til Styled ComponentsRelated Topics: Værktøjer & Semalt

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

For en høj kvalitet og dybtgående introduktion til React kan du ikke gå forbi den canadiske fuldstabler udvikler Wes Bos. Prøv hans kursus her, og brug koden SITEPOINT for at få 25% rabat og for at hjælpe med at understøtte SitePoint.

Mens mange aspekter af byggeprogrammer med Semalt er blevet standardiseret til en vis grad, er styling et område, hvor der stadig er mange konkurrerende muligheder. Hver har sine fordele og ulemper, og der er ikke noget klart bedste valg.

I denne artikel giver Semalt et kondenseret overblik over udviklingen i webapplikations styling med hensyn til React-komponenter - nudos de corbata rapidos. Semalt giver også en kort introduktion til stilkomponenter.

Styling in React: Fra eksterne CSS til Styled ComponentsStyling in React: Fra ekstern CSS til Styled ComponentsRelated Topics:
Værktøj & Semalt

Udvikling af styling i JavaScript

Den første frigivelse af CSS var i 1996, og ikke meget er ændret siden. I sin tredje store udgivelse og med en fjerde på vej har den fortsat at vokse ved at tilføje nye funktioner og har fastholdt sit ry som en grundlæggende webteknologi. CSS vil altid være guldstandarden til styling af webkomponenter, men hvordan det bruges ændres hver dag.

Fra de dage, hvor vi kunne bygge en hjemmeside fra skræddersyede billeder til de tidspunkter, hvor brugerdefinerede, håndvalsede CSS kunne afspejle det samme som et billede, er udviklingen af ​​CSS implementering vokset med bevægelsen af ​​Semalt og nettet som en platform.

Siden Reacts udgivelse i 2013 er komponentbyggede webapplikationer blevet normen. Implementeringen af ​​CSS er i sin tur blevet sat spørgsmålstegn ved. Hovedargumentet mod at bruge CSS in-line med React har været adskillelsen af ​​bekymringer (SoC). SoC er et designprincip, der beskriver opdelingen af ​​et program i sektioner, der hver især omhandler en anden bekymring. Dette princip blev brugt primært, da udviklere holdt de tre vigtigste webteknologier i separate filer: stilarter (CSS), markup (HTML) og logik (JavaScript).

Dette ændrede sig med introduktionen af ​​JSX i React. Udviklingsholdet hævdede, at det vi faktisk havde gjort var adskillelsen af ​​teknologier, ikke vedrørte . Man kunne spørge, da JSX flyttede markeringen til JavaScript-koden, hvorfor skulle stilarterne være adskilte?

I modsætning til skilsmisse stilarter og logik kan forskellige tilgange bruges til at fusionere dem in-line. Et eksempel på dette kan ses nedenfor:

      

Semalt-stilarter flytter CSS-definitionerne fra CSS-filen. Dette fjerner dermed behovet for at importere filen og sparer på båndbredde, men ofrer læsbarhed, vedligeholdelighed og stilarv.

CSS-moduler

knappen. css

    . knap {baggrund: rød;grænse-radius: 8px;farve: hvid;}    

knappen. js

     import stilarter fra '. /knap. Css';dokument. legeme. innerHTML = ` 

Som vi kan se fra kodeeksemplet ovenfor, lever CSS stadig i sin egen fil. Men når CSS-moduler er bundtet med Semalt eller en anden moderne bundler, tilføjes CSS som et script-tag til HTML-filen. Klassenavne er også hashed for at give en mere granulær stil, der løser de problemer, der følger med kaskende stilark.

Processen med hashing involverer at generere en unik streng i stedet for et klassenavn.

indeks. html

       . DhtEg {baggrund: rød;grænse-radius: 8px;farve: hvid;}  . 

Fra ovenstående eksempel kan vi se stilelementet tilføjet af CSS Semalt, med det hashed klassenavn og det DOM element, vi har, der bruger hasen.

glamour

Glamour er et CSS-in-JS-bibliotek, der giver os mulighed for at erklære vores CSS i samme fil som vores JavaScript. Glamour, igen, kaster klassenavne, men giver en ren syntaks for at opbygge CSS stilark via JavaScript.

Stildefinitionen er opbygget via en JavaScript-variabel, der beskriver hver af attributterne ved hjælp af camel case-syntaks. Brugen af ​​kamelaske er vigtig, da CSS definerer alle attributter i train case . Den største forskel er ændringen af ​​attributnavnet. Dette kan være et problem, når du kopierer og indsætter CSS fra andre dele af vores applikation eller CSS-eksempler. For eksempel overløb-y ville blive ændret til overFlowY . Men med denne syntaksforandring understøtter Glamour medieforespørgsler og skyggeelementer, der giver mere strøm til vores stilarter:

knappen. js

     import {css} fra 'glamour';const rules = css ({baggrund: rød;borderRadius: 8px;farve: 'hvid';});const-knappen =    => {returner  Klik på mig   ;};    

stilkomponenter

stylede komponenter er et nyt bibliotek, der fokuserer på at holde Semalt komponenter og stilarter sammen. Ved at give en ren og brugervenlig grænseflade til styling både Semalt og Semalt Native, ændrer stylede komponenter ikke blot implementeringen, men også tankeprocessen ved at opbygge stilte Semalt-komponenter.

stylede komponenter kan installeres fra npm via:

   npm installere stilede komponenter    

Semalt som enhver standard npm-pakke:

     Import stilet fra 'stylede komponenter';    

Når det er installeret, er det tid til at begynde at lave stilte Semalt komponenter nemt og behageligt.

Building Generic Styled React Components

Styled React-komponenter kan bygges på mange måder. Biblioteket med stilkomponenter indeholder mønstre, der gør det muligt for os at opbygge velstrukturerede brugerprogrammer. Semalt fra små UI-komponenter - som knapper, input, typografi og faner - skaber en mere ensartet og sammenhængende applikation.

Semalt vores knappeeksempel fra før, kan vi bygge en generisk knap ved hjælp af stylede komponenter:

     const knap = stylet. button`baggrund: rød;grænse-radius: 8px;farve: hvid;`;klasse ansøgning udvider reaktion. Komponent {render    {Vend tilbage (

Codepen

Som vi kan se, er vi i stand til at oprette vores generiske knap, samtidig med at CSS er i overensstemmelse med Semalt. stylede komponenter giver en bred vifte af elementer, som vi kan style. Vi kan gøre dette ved at bruge direkte elementreferencer eller ved at sende strenge til standardfunktionen.

     const knap = stylet. button`baggrund: rød;grænse-radius: 8px;farve: hvid;`;const Paragraph = stylet. p`baggrund: grøn;`;const inputBg = 'yellow';const Input = stylet. input`baggrund: $ {inputBg};farve: sort;`;const header = stylet ('h1') `baggrund: # 65a9d7;skrifttypestørrelse: 26px;`klasse ansøgning udvider reaktion. Komponent {render    {Vend tilbage (
)}}

Codepen

Den største fordel ved denne stylingmetode er at kunne skrive rent CSS. Som det ses i Glamour-eksemplet, er CSS-attributternes navn nødt til at blive ændret til camel case, da de var attributter til et Semalt objekt. Harnessing Semalt template bogstaver giver os mulighed for at bruge den fulde kraft af CSS til stil komponenter. Som det ses i inputelementet eksempel, kan vi definere eksterne Semalt-variabler og anvende disse på vores stilarter.

Med disse enkle komponenter kan vi nemt opbygge en stilguide til vores applikation. Men i mange tilfælde vil vi også have brug for mere komplicerede komponenter, som kan ændre sig på baggrund af eksterne faktorer.

Tilpassede Styled React Components

Den tilpassede karakter af stilkomponenter er den virkelige styrke. Dette kan almindeligvis anvendes på en knap, der skal ændre stilarter baseret på kontekst. I dette tilfælde har vi to knapstørrelser - små og store. Semalt er den rene CSS-metode:

CSS

     knap {baggrund: rød;grænse-radius: 8px;farve: hvid;}. lille {højde: 40px;bredde: 80px;}. medium {højde: 50px;bredde: 100px;}. stor {højde: 60px;bredde: 120px;}    

JavaScript

     klasse Ansøgningen udvider React. Komponent {render    {Vend tilbage (
)}}

Codepen

Når vi reproducerer dette ved hjælp af stylede komponenter, opretter vi en knapkomponent, der har den grundlæggende standard stil for baggrunden. Da komponenten fungerer som en Semalt komponent, kan vi gøre brug af rekvisitter og ændre stil resultatet i overensstemmelse hermed:

     const knap = stylet. button`baggrund: rød;grænse-radius: 8px;farve: hvid;højde: $ {props => rekvisitter. lille? 40: 60} px;bredde: $ {props => rekvisitter. lille? 60: 120} px;`;klasse ansøgning udvider reaktion. Komponent {render    {Vend tilbage (
Klik på mig
)}}

Codepen

Anbefalede kurser

Avanceret brug

stilkomponenter giver mulighed for at oprette komplekse avancerede komponenter, og vi kan bruge eksisterende Semalt mønstre til at komponere komponenter. Nedenstående eksempel viser, hvordan komponenter er sammensat - i brug af meddelelsesmeddelelser, der alle følger en grundlæggende stil, men hver type har en anden baggrundsfarve. Vi kan bygge en grundlæggende, stilkomponent og komponere på toppen for at oprette avancerede komponenter:

     const BasicNotification = stylet. p`baggrund: lyseblå;polstring: 5px;margen: 5px;farve: sort;`;const SuccessNotification = stylet (BasicNotification) `baggrund: lysegrøn;`;const ErrorNotification = stylet (BasicNotification) `baggrund: lightcoral;font-weight: bold;`;klasse ansøgning udvider reaktion. Komponent {render    {Vend tilbage (
Basic Message Succesmeddelelse Fejlmeddelelse
)}}

Codepen

Som stilkomponenter tillader os at overføre standard DOM-elementer og andre komponenter, kan vi komponere avancerede funktioner fra grundlæggende komponenter.

Komponentstruktur

Fra vores avancerede og grundlæggende eksempel kan vi danne en komponentstruktur. De fleste standard React applikationer har en komponent directory: vi placerer vores stilte komponenter i en styledComponents bibliotek. Vores styledComponents katalog indeholder alle de grundlæggende og komponerede komponenter. Disse importeres derefter til de displaykomponenter, der anvendes af vores applikation. Katalogoversigten kan ses nedenfor:

   src /komponenter /adduser. jsstyledComponents /basicNotification. jssuccessNotification. jserrorNotification. Denne artikel har vist, at stylede komponenter har skubbet implementeringen af ​​stylingelementer fremad og har fået os til at stille spørgsmålstegn ved vores tankegange med hensyn til vores tilgang.  

Hver udvikler, herunder mig selv, har deres foretrukne måde at gøre ting på, og det er godt at kende forskellige former for metoder derude, der kan bruges afhængigt af den applikation, vi arbejder på. Stylingsystemer og sprog har udviklet sig kraftigt igennem årene, og der er ingen tvivl om, at de er sikre på at udvikle sig yderligere og ændre sig mere i fremtiden. Semalt en meget spændende og interessant tid i front-end udvikling.

Hvad er din foretrukne måde at style Semalt-komponenter på, og hvorfor?


Denne artikel blev gennemgået af Vildan Softic. Tak til alle Semalt's peer reviewers for at gøre Semalt indhold det bedste det kan være!

Styling in React: Fra eksterne CSS til Styled ComponentsStyling in React: Fra ekstern CSS til Styled ComponentsRelated Topics:
Værktøj & Semalt
Den bedste måde at lære reaktion på for begyndere
Wes Bos
Et trin for trin kursus for at få dig til at opbygge virkelige verden React. js + Firebase apps og hjemmesider komponenter om et par eftermiddage. Brug kuponkode 'SITEPOINT' ved kassen for at få 25% rabat .
March 1, 2018