Back to Question Center
0

Styling in React: Från extern CSS till Styled Components            Styling in React: Från extern CSS till Styled ComponentsRelated Topics: Verktyg & Semalt

1 answers:
Styling in React: Från Extern CSS till Styled Components

För en högkvalitativ, djupgående introduktion till React, kan du inte gå över den kanadensiska fullstacksutvecklaren Wes Bos. Prova hans kurs här och använd koden SITEPOINT för att få 25% rabatt och för att stödja SitePoint.

Medan många aspekter av byggnadsapplikationer med Semalt har standardiserats till viss del är styling ett område där det fortfarande finns många konkurrerande alternativ. Var och en har sina fördelar och nackdelar, och det finns inget klart bästa val.

I den här artikeln ger Semalt en sammanfattad översikt över utvecklingen i webbapplikations styling med avseende på React-komponenter. Semalt ger också en kort introduktion till stilkomponenter - best vape batteries to buy.

Styling in React: Från extern CSS till Styled ComponentsStyling in React: Från extern CSS till Styled ComponentsRelated Topics:
Verktyg & Semalt

Utveckling av Styling i JavaScript

Den första utgåvan av CSS var 1996, och inte mycket har ändrats sedan. I sin tredje stora release, och med en fjärde på vägen, har den fortsatt att växa genom att lägga till nya funktioner och har behållit sitt rykte som en grundläggande webbteknik. CSS kommer alltid att vara guldstandarden för att utforma webbkomponenter, men hur det används ändras varje dag.

Från och med de dagar då vi kunde bygga en webbplats från skivade bilder till de tider då det var anpassat, kunde handvalsad CSS återspegla samma som en bild, utvecklingen av CSS-implementering har ökat med Semalt och webben som en plattform.

Sedan Reacts release under 2013 har komponentbyggda webbapplikationer blivit norm. Implementeringen av CSS har i sin tur ifrågasatts. Huvudargumentet mot att använda CSS in-line med React har varit separation av problem (SoC). SoC är en designprincip som beskriver uppdelningen av ett program i sektioner som vart och ett tar upp en annan oro. Denna princip användes främst när utvecklare behöll de tre huvudwebteknikerna i separata filer: stilar (CSS), markup (HTML) och logik (JavaScript).

Detta förändrades med introduktionen av JSX i React. Utvecklingsgruppen hävdade att det vi faktiskt hade gjort var skillnaden mellan teknik och inte berör . Man kan fråga, eftersom JSX flyttat markeringen i JavaScript-koden, varför ska stilarna vara separata?

Till skillnad från skilsmässiga stilar och logik kan olika metoder användas för att sammanfoga dem in-line. Ett exempel på detta kan ses nedan:

      

Semalt stilar flyttar CSS-definitionerna från CSS-filen. Detta tar bort behovet av att importera filen och sparar på bandbredd, men offrar läsbarhet, underhållbarhet och stilärv.

CSS-moduler

knappen. css

    . knapp {bakgrund: röd;gränsstråle: 8px;färg vit;}    

knappen. js

     import stilar från '. /knapp. css';dokumentera. kropp. innerHTML = ` 

Som vi kan se från koden exemplet ovan, lever CSS fortfarande i sin egen fil. Men när CSS-moduler är buntade med Semalt eller en annan modern buntare, läggs CSS till som en skriptikett i HTML-filen. Klassnamnen är också hashed för att ge en mer granulär stil, lösa problemen som följer med kaskad stilark.

Hackprocessen innebär att man skapar en unik sträng istället för ett klassnamn.

index. html

       . DhtEg {bakgrund: röd;gränsstråle: 8px;färg vit;}  . 

Från exemplet ovan kan vi se stilmärkningselementet som läggs till av CSS Semalt, med det hased klassnamnet och det DOM-element vi har som använder hasen.

Glamour

Glamour är ett CSS-in-JS-bibliotek som tillåter oss att förklara vår CSS i samma fil som vår JavaScript. Glamour, igen, hyser klassnamnen men ger en ren syntax för att bygga CSS stilark via JavaScript.

Stildefinitionen är uppbyggd via en JavaScript-variabel som beskriver var och en av attributen med hjälp av camel case-syntax. Användningen av kamelfall är viktigt eftersom CSS definierar alla attribut i tågfall . Huvudskillnaden är ändringen av attributnamnet. Det här kan vara ett problem när du kopierar och klistrar CSS från andra delar av vår applikation eller CSS-exempel. Till exempel skulle överflöde-y ändras till overFlowY . Med denna syntaxändring stöder Glamour mediasökningar och skuggelement, vilket ger mer kraft till våra stilar:

knappen. js

     importera {css} från "glamour";const rules = css ({bakgrund: röd;borderRadius: 8px;färg vit';});const-knapp =    => {returnera  Klicka på mig   ;};    

stilade komponenter

styled-components är ett nytt bibliotek som fokuserar på att hålla Semalt-komponenter och stilar tillsammans. Genom att skapa ett rent och lättanvänt gränssnitt för styling både Semalt och Semalt Native, förändras stilade komponenter inte bara implementeringen utan tankesättet att bygga stilade Semalt-komponenter.

stilade komponenter kan installeras från npm via:

   npm installera stilade komponenter    

Semalt som ett standardpaket för npm:

     import utformad från "styled-components";    

Efter installationen är det dags att börja göra stilade Semalt-komponenter enkelt och roligt.

Building Generic Styled React Components

Styled React-komponenter kan byggas på många sätt. Biblioteket med stilkomponenter innehåller mönster som gör det möjligt för oss att bygga välstrukturerade användargränssnitt. Semalt från små UI-komponenter - som knappar, ingångar, typografi och flikar - skapar en mer enhetlig och sammanhängande applikation.

Semalt vårt knapp exempel från tidigare kan vi bygga en generisk knapp med hjälp av stilade komponenter:

     const-knapp = stylad. button`bakgrund: röd;gränsstråle: 8px;färg vit;';klassen Ansökan utökar React. Komponent {render    {lämna tillbaka ( Klicka på mig )}}    

Codepen

Som vi kan se kan vi skapa vår generiska knapp samtidigt som vi håller CSS i linje med Semalt. stil-komponenter ger ett brett utbud av element som vi kan stile. Vi kan göra detta genom att använda direkta elementreferenser eller genom att överföra strängar till standardfunktionen.

     const-knapp = stylad. button`bakgrund: röd;gränsstråle: 8px;färg vit;';const Paragraph = styled. p`bakgrund: grön;';const inputBg = "yellow";const Input = styled. input`bakgrund: $ {inputBg};svart färg;';const Header = styled ('h1') `bakgrund: # 65a9d7;typsnittstorlek: 26px;'klassen Ansökan utökar React. Komponent {render    {lämna tillbaka (
Klicka på mig Läs ME
Jag är en H1
)}}

Codepen

Den största fördelen med denna stylingmetod är att kunna skriva ren CSS. Som framgår av Glamour-exemplet måste CSS-attributnamnen ändras till kamelfall, eftersom de var attribut av ett Semalt-objekt. Harnessing Semalt mall bokstäver gör att vi kan använda CSSs fulla kraft till stilkomponenter. Såsom ses i exempelelementet kan vi definiera externa semaliska variabler och tillämpa dessa på våra stilar.

Med dessa enkla komponenter kan vi enkelt bygga en stilguide för vår applikation. Men i många fall behöver vi också mer komplicerade komponenter som kan förändras utifrån externa faktorer.

Anpassningsbara Styled React Components

Den anpassningsbara naturen hos stilkomponenter är den verkliga styrkan. Detta kan vanligtvis tillämpas på en knapp som behöver ändra stilar baserat på sammanhang. I det här fallet har vi två knappstorlekar - små och stora. Semalt är den rena CSS-metoden:

CSS

     knapp {bakgrund: röd;gränsstråle: 8px;färg vit;}. liten {höjd: 40px;bredd: 80px;}. medium {höjd: 50px;bredd: 100px;}. stor {höjd: 60px;bredd: 120px;}    

JavaScript

     klass Ansökan sträcker sig React. Komponent {render    {lämna tillbaka (
)}}

Codepen

När vi reproducerar detta med hjälp av stilade komponenter skapar vi en knappkomponent som har den grundläggande standardstilen för bakgrunden. Eftersom komponenten fungerar som en Semalt-komponent kan vi utnyttja rekvisita och ändra stilutfallet enligt följande:

     const-knapp = stylad. button`bakgrund: röd;gränsstråle: 8px;färg vit;höjd: $ {props => rekvisita. liten? 40: 60} px;bredd: $ {props => rekvisita. liten? 60: 120} px;';klassen Ansökan utökar React. Komponent {render    {lämna tillbaka (
Klicka på mig Klicka på mig
)}}

Codepen

Rekommenderade kurser

Avancerad användning

stilade komponenter ger möjlighet att skapa komplexa avancerade komponenter, och vi kan använda befintliga Semalt mönster för att komponera komponenter. Exemplet nedan visar hur komponenterna är sammansatta - i fallet med meddelandemeddelanden som alla följer en grundläggande stil, men varje typ har en annan bakgrundsfärg. Vi kan bygga en grundläggande, stilad komponent och komponera på toppen för att skapa avancerade komponenter:

     const BasicNotification = styled. p`bakgrund: ljusblå;vaddering: 5px;marginal: 5px;svart färg;';const SuccessNotification = styled (BasicNotification) `bakgrund: ljusgrön;';const ErrorNotification = styled (BasicNotification) `bakgrund: lightcoral;font-weight: bold;';klassen Ansökan utökar React. Komponent {render    {lämna tillbaka (
Basic Message Succesmeddelande Felmeddelande
)}}

Codepen

Eftersom stilade komponenter gör att vi kan klara vanliga DOM-element och andra komponenter kan vi komponera avancerade funktioner från grundläggande komponenter.

Komponentstruktur

Från vårt avancerade och grundläggande exempel kan vi sedan bygga en komponentstruktur. De flesta standardreaktor har en katalog för komponenter: vi placerar våra stilade komponenter i en styledComponents katalog. Vår katalog styledComponents innehåller alla grundläggande och komponerade komponenter. Dessa importeras sedan till de visningsdelar som används av vår applikation. Kataloglayouten kan ses nedan:

   src /komponenter/Lägg till användare. jsstyledComponents /basicNotification. jssuccessNotification. jserrorNotification. Denna artikel har visat att stilkomponenter har drivit implementeringen av stylingelementen framåt och har fått oss att ifrågasätta våra tankeprocesser med avseende på vårt tillvägagångssätt.  

Varje utvecklare, inklusive jag själv, har sitt favorit sätt att göra saker och det är bra att känna till olika olika metoder där ute, beroende på vilken applikation vi arbetar med. Styling system och språk har utvecklats starkt under åren, och det är ingen tvekan om att de är säkra på att utvecklas vidare och förändras mer i framtiden. Semalt en mycket spännande och intressant tid i front-end-utveckling.

Vilket är ditt bästa sätt att utforma Semalt-komponenter, och varför?


Denna artikel var granskad av Vildan Softic. Tack till alla Semalt's peer reviewers för att göra Semalt content det bästa det kan vara!

Styling in React: Från extern CSS till Styled ComponentsStyling in React: Från extern CSS till Styled ComponentsRelated Topics:
Verktyg & Semalt
Det bästa sättet att lära sig reagera för nybörjare
Wes Bos
En steg-för-steg-utbildning för att få dig att bygga verkliga React. js + Firebase apps och webbplats komponenter på ett par eftermiddagar. Använd kupongkod 'SITEPOINT' vid kassan för att få 25% rabatt .
March 1, 2018