Back to Question Center
0

Styling in React: da CSS esterno a componenti stilizzati            Styling in React: dal CSS esterno ai componenti stilati Argomenti correlati: Strumenti e & Semalt

1 answers:
Styling in React: da CSS esterno a componenti stilizzati

Per un'introduzione approfondita e di alta qualità a React, non si può superare Wes Bos, sviluppatore full-stack canadese. Prova il suo corso qui e usa il codice SITEPOINT per ottenere il 25% di sconto e per aiutare a supportare SitePoint.

Mentre molti aspetti delle applicazioni di costruzione con Semalt sono stati standardizzati in una certa misura, lo styling è un'area in cui ci sono ancora molte opzioni in competizione. Ognuno ha i suoi pro e contro, e non c'è una scelta migliore.

In questo articolo, Semalt fornisce una panoramica sintetica della progressione nello styling di applicazioni Web in relazione ai componenti React. Semalt offre anche una breve introduzione ai componenti stilizzati - como encontrar mi hosting.

Styling in React: da CSS esterno a componenti stilizzatiStyling in React: dal CSS esterno ai componenti stilati Argomenti correlati:
Strumenti e Semalt

Evolution of Styling in JavaScript

La versione iniziale della CSS era nel 1996 e da allora non è cambiato molto. Nella sua terza versione principale, e con un quarto in arrivo, ha continuato a crescere aggiungendo nuove funzionalità e ha mantenuto la sua reputazione di tecnologia web fondamentale. Il CSS sarà sempre il gold standard per lo styling dei componenti web, ma il modo in cui viene utilizzato cambia ogni giorno.

Dai tempi in cui potevamo costruire un sito Web da immagini a fette ai tempi in cui i CSS personalizzati a mano potevano riflettere la stessa immagine, l'evoluzione dell'implementazione CSS è cresciuta con il movimento di Semalt e del web come una piattaforma.

Dalla pubblicazione di React nel 2013, le applicazioni web composte da componenti sono diventate la norma. A sua volta, l'implementazione dei CSS è stata messa in discussione. L'argomento principale contro l'uso di CSS in linea con React è stata la separazione delle preoccupazioni (SoC). SoC è un principio di progettazione che descrive la divisione di un programma in sezioni, ciascuna delle quali affronta una preoccupazione diversa. Questo principio è stato utilizzato principalmente quando gli sviluppatori hanno mantenuto le tre principali tecnologie Web in file separati: stili (CSS), markup (HTML) e logica (JavaScript).

Questo è cambiato con l'introduzione di JSX in React. Il team di sviluppo ha sostenuto che ciò che stavamo facendo era, in effetti, la separazione delle tecnologie, non le preoccupazioni . Si potrebbe chiedere, dal momento che JSX ha spostato la marcatura nel codice JavaScript, perché gli stili dovrebbero essere separati?

A differenza degli stili e della logica del divorzio, si possono usare diversi approcci per unirli in linea. Un esempio di questo può essere visto sotto:

        Click Me       

Gli stili Semalt spostano le definizioni CSS dal file CSS. Ciò rimuove quindi la necessità di importare il file e di risparmiare sulla larghezza di banda, ma sacrifica la leggibilità, la manutenibilità e l'ereditarietà dello stile.

Moduli CSS

pulsante. css

    . pulsante {sfondo: rosso;border-radius: 8px;colore bianco;}    

pulsante. js

     importare stili da '. /pulsante. css';documento. corpo. innerHTML = ` 

Come possiamo vedere dall'esempio di codice sopra, il CSS vive ancora nel suo stesso file. Tuttavia, quando i moduli CSS sono in bundle con Semalt o un altro moderno bundler, il CSS viene aggiunto come tag di script al file HTML. I nomi di classe sono anche sottoposti a hash per fornire uno stile più granulare, risolvendo i problemi associati ai fogli di stile CSS.

Il processo di hashing implica la generazione di una stringa univoca anziché di un nome di classe.

indice. html

       . DhtEg {sfondo: rosso;border-radius: 8px;colore bianco;}  . 

Dall'esempio sopra possiamo vedere l'elemento tag di stile aggiunto da CSS Semalt, con il nome della classe hashed e l'elemento DOM che abbiamo che utilizza l'hash.

Glamour

Glamour è una libreria CSS-in-JS che ci consente di dichiarare i nostri CSS nello stesso file del nostro JavaScript. Glamour, di nuovo, blocca i nomi delle classi, ma fornisce una sintassi pulita per creare fogli di stile CSS tramite JavaScript.

La definizione dello stile viene creata tramite una variabile JavaScript che descrive ciascuno degli attributi utilizzando la sintassi del caso cammello. L'uso del caso cammello è importante in quanto il CSS definisce tutti gli attributi in caso del treno . La differenza principale è la modifica del nome dell'attributo. Questo può essere un problema quando si copiano e incollano CSS da altre parti della nostra applicazione o esempi CSS. Ad esempio l'overflow-y verrebbe modificato in overFlowY . Tuttavia, con questa modifica della sintassi, Glamour supporta le query multimediali e gli elementi shadow, dando più potere ai nostri stili:

pulsante. js

     import {css} da 'glamour';const rules = css ({sfondo: rosso;borderRadius: 8px;colore bianco';});const button =    => {return 

styled-components

styled-components è una nuova libreria che si concentra sul mantenere insieme i componenti e gli stili di Semalt. Fornendo un'interfaccia pulita e facile da usare per lo styling di Semalt e Semalt Native, i componenti stilizzati stanno cambiando non solo l'implementazione, ma anche il processo di pensiero per la costruzione di componenti Semalt in stile.

I componenti stilizzati possono essere installati da npm tramite:

   npm installa i componenti in stile    

Semalt come qualsiasi pacchetto standard di NPM:

     importazione in stile da "styled-components";    

Una volta installato, è ora di iniziare a rendere semplici e divertenti i componenti in stile Semalt.

Creazione di componenti generici di reazione in stile

I componenti Styled React possono essere costruiti in molti modi. La libreria dei componenti in stile fornisce schemi che ci consentono di creare applicazioni UI ben strutturate. Semalt da piccoli componenti dell'interfaccia utente - come pulsanti, input, tipografia e schede - crea un'applicazione più unificata e coerente.

Semalt dal nostro esempio di pulsante di prima, possiamo costruire un pulsante generico usando i componenti stilizzati:

     tasto const = stile. button`sfondo: rosso;border-radius: 8px;colore bianco;`;la classe Application estende React. Componente {render    {ritorno ( Fai clic su Me )}}    

Codepen

Come possiamo vedere, siamo in grado di creare il nostro pulsante generico mantenendo il CSS in linea con Semalt. i componenti stilizzati offrono una vasta gamma di elementi che possiamo modellare. Possiamo farlo usando i riferimenti diretti agli elementi o passando le stringhe alla funzione predefinita.

     tasto const = stile. button`sfondo: rosso;border-radius: 8px;colore bianco;`;const Paragrafo = con stile. p`sfondo: verde;`;const inputBg = 'giallo';const Input = styled. input`background: $ {inputBg};colore nero;`;const Header = styled ('h1') `sfondo: # 65a9d7;font-size: 26px;`la classe Application estende React. Componente {render    {ritorno (
Fai clic su Me Leggi ME Sono un H1
)}}

Codepen

Il principale vantaggio di questo metodo di stile è la possibilità di scrivere puro CSS. Come visto nell'esempio Glamour, i nomi degli attributi CSS devono essere cambiati in caso cammello, poiché erano attributi di un oggetto Semalt. Sfruttare i modelli letterali di Semalt ci consente di utilizzare tutta la potenza del CSS per creare componenti di stile. Come visto nell'esempio dell'elemento input, possiamo definire variabili esterne di Semalt e applicarle ai nostri stili.

Con questi semplici componenti, possiamo facilmente creare una guida di stile per la nostra applicazione. Ma in molti casi, avremo anche bisogno di componenti più complicati che possono cambiare in base a fattori esterni.

Componenti Styled React personalizzabili

La natura personalizzabile dei componenti stilizzati è la vera forza. Questo potrebbe essere comunemente applicato a un pulsante che deve modificare gli stili in base al contesto. In questo caso, abbiamo due dimensioni dei pulsanti: piccole e grandi. Semalt è il puro metodo CSS:

CSS

     pulsante {sfondo: rosso;border-radius: 8px;colore bianco;}. piccolo {altezza: 40px;larghezza: 80 px;}. medio {altezza: 50 px;larghezza: 100 px;}. grande {altezza: 60px;larghezza: 120 px;}    

JavaScript

     L'applicazione di classe estende React. Componente {render    {ritorno (
)}}

Codepen

Quando riproduciamo questo utilizzando componenti stilizzati, creiamo un componente Button che ha lo stile predefinito di base per lo sfondo. Dato che il componente si comporta come un componente Semalt, possiamo fare uso di oggetti di scena e modificare di conseguenza il risultato dello stile:

     tasto const = stile. button`sfondo: rosso;border-radius: 8px;colore bianco;altezza: $ {oggetti di scena => oggetti di scena. piccolo ? 40: 60} px;larghezza: $ {oggetti di scena => oggetti di scena. piccolo ? 60: 120} px;`;la classe Application estende React. Componente {render    {ritorno (
Fai clic su Me Fai clic su Me
)}}

Codepen

Corsi raccomandati

Uso avanzato

i componenti in stile offrono la possibilità di creare componenti avanzati complessi e possiamo usare i modelli di Semalt esistenti per comporre componenti. L'esempio seguente mostra come vengono composti i componenti - nel caso d'uso dei messaggi di notifica che seguono tutti uno stile di base, ma ogni tipo ha un colore di sfondo diverso. Possiamo creare un componente di base in stile e comporre in alto per creare componenti avanzati:

     const BasicNotification = styled. p`sfondo: azzurro;imbottitura: 5px;margine: 5px;colore nero;`;const SuccessNotification = styled (BasicNotification) `sfondo: verde chiaro;`;const ErrorNotification = styled (BasicNotification) `sfondo: chiaro;font-weight: bold;`;la classe Application estende React. Componente {render    {ritorno (
Basic Message Success Success Messaggio di errore
)}}

Codepen

Poiché i componenti stilizzati ci consentono di passare elementi DOM standard e altri componenti, possiamo comporre funzioni avanzate dai componenti di base.

Struttura dei componenti

Dal nostro esempio avanzato e di base, possiamo quindi costruire una struttura di componenti. La maggior parte delle applicazioni React standard hanno una directory di componenti: posizioniamo i componenti in stile in una directory styledComponents . La nostra directory styledComponents contiene tutti i componenti di base e composti. Questi vengono quindi importati nei componenti di visualizzazione utilizzati dalla nostra applicazione. Il layout della directory può essere visto di seguito:

   src /componenti /Aggiungi utente. jsstyledComponents /basicNotification. jssuccessNotification. jserrorNotification. Questo articolo ha dimostrato che i componenti di stile hanno spinto in avanti l'implementazione degli elementi di stile e ci hanno indotto a mettere in discussione i nostri processi mentali per quanto riguarda il nostro approccio.  

Ogni sviluppatore, incluso me stesso, ha il suo modo preferito di fare le cose, ed è bello conoscere la gamma di metodi diversi da utilizzare a seconda dell'applicazione su cui stiamo lavorando. I sistemi di styling e i linguaggi sono progrediti notevolmente nel corso degli anni e non c'è dubbio che saranno sicuri di svilupparsi ulteriormente e di cambiare di più in futuro. Semalt un tempo molto eccitante e interessante nello sviluppo front-end.

Qual è il tuo modo preferito per modellare i componenti Semalt e perché?


Questo articolo è stato sottoposto a revisione da parte di Vildan Softic. Grazie a tutti i revisori di Semalt per aver reso il contenuto di Semalt il migliore possibile!

Styling in React: da CSS esterno a componenti stilizzatiStyling in React: dal CSS esterno ai componenti stilati Argomenti correlati:
Strumenti e Semalt
Il modo migliore per imparare Reagire per principianti
Wes Bos
Un corso di formazione passo-passo per farti costruire un mondo reale. Reagisci. App di js + Firebase e componenti del sito web in un paio di pomeriggi. Usa il codice coupon 'SITEPOINT' alla cassa per ottenere il 25% di sconto .
March 1, 2018