MVC er et veldig populært paradigme i webutvikling og har eksistert lenge. React-rammeverket er en kraftig del av den treenigheten som er modell-View-Controller, fordi den fokuserer rent på Se alene. React er skrevet i JavaScript og opprettet av Facebook og Instagram utviklingsteam.
Reakt blir brukt over hele nettet for å skape raske webapplikasjoner som er enkle å vedlikeholde på grunn av måten React-rammen strukturerer visningslagskoden.
For å komme i gang, er det et enkelt eksempel på React tatt fra de offisielle eksemplene:
var HelloMessage = React.createClass (render: function () returnHei this.props.name; ); React.render (, document.getElementById ('container'));
Dette eksemplet vil gjøre 'Hello John' til en JSX er et XML / HTML-lignende syntaks som brukes til å gjengi HTML fra JavaScript-kode. React forvandler JSX til innfødt JavaScript for nettleseren, og med de oppgitte verktøyene kan du konvertere eksisterende HTML-koden til JSX! JSX gjør det enkelt å koble sammen som det føles akkurat som å skrive inn HTML, men fra JavaScript. Kombinert med Node, dette gir en svært konsistent arbeidsflyt. JSX er ikke pålagt å bruke React-du kan bare bruke vanlig JS-men det er et veldig kraftig verktøy som gjør det enkelt å definere trestrukturer med og tildele attributter, så jeg anbefaler det sterkt. For å gjengi en HTML-kode i React, bruk bare små bokstaver navn med noen JSX slik: Det er flere måter å bruke React på. Den offisielt anbefalte måten er fra npm eller Facebook CDN, men i tillegg kan du klone fra git og bygge din egen. Du kan også bruke startpakken eller spare tid med en stillasgenerator fra Yeoman. Vi vil dekke alle disse metodene slik at du får full forståelse. For den raskeste måten å komme i gang, bare inkludere React and React Dom-bibliotekene fra fb.me CDN som følger: React manualen anbefaler å bruke React med et CommonJS modul system som browserify eller webpack. React manualen anbefaler også å bruke Du vil nå kunne se React installasjonen inne i Du må ha Node V4.0.0 + og npm v2.0.0 +. Du kan sjekke nodeversjonen din med Jeg anbefaler at du bruker nvm - node versjon manager til å oppdatere og velge noden versjonen. Det er lett å skaffe nvm ved å bare kjøre: Dette skriptet kloner nvm-depotet til Hvis du vil installere manuelt For å aktivere nvm med denne metoden må du kilde den fra skallet med: Merk: Legg denne linjen til din Med nvm nå installert, kan vi få hvilken som helst versjon av node vi trenger, og kan sjekke listen over installerte versjoner med Installer den nyeste versjonen og sett den som standardversjon med følgende: Node er oppdatert og npm er inkludert i avtalen. Du er nå klar til å rulle med installasjonen. Klon depotet med git inn i en katalog som heter Når du har repo klonet, kan du nå bruke På dette punktet a Først av alt, last ned startpakken. Trekk ut zip og i roten opprett en I dette eksemplet bruker React Babel til å transformere JSX til vanlig JavaScript via Create a new file at Now all you need to do is reference it in your HTML, so open up the Oppdater siden, og du vil se Merk: Enkelte nettlesere (for eksempel Chrome) mislykkes i å laste filen, med mindre den vises via HTTP, så sørg for at du bruker en lokal server. Jeg anbefaler browsersync-prosjektet. Du kan også bruke kommandolinjegrensesnittet (CLI) til å transformere JSX-en din ved hjelp av babelkommandolinjeverktøyene. Dette er enkelt oppnådd via kommandoen npm: De Nå som babel er installert, la oss gjøre oversettelsen av Nå filen Nå som babel har generert Så å samle, med babel kan vi laste JSX direkte inn i a Generering av denne kopien er gjort på kommandolinjen, og da dette er en repeterende oppgave, anbefaler jeg deg å automatisere prosessen via bruk av Yeoman er et veldig nyttig verktøy for å starte prosjekter raskt og med en optimal arbeidsflyt og verktøykonfigurasjon. Tanken er å la deg bruke mer tid på utvikling enn konfigurering av prosjektets arbeidsområde, og for å minimere gjentatte oppgaver (vær oppmerksom på dette. RSI er nummer én grunnen til at kodere stopper kodingen). Så som en god praksis, spare tid med verktøy og implementere D.R.Y (Gjenta ikke deg selv) i ditt daglige liv, vil øke din helse og effektivitet, og la deg bruke mer tid på å lage faktisk kode i stedet for konfigurasjon. Det er mange stillas der ute, som kommer i mange smaker for forskjellige skalaer av prosjekt. For dette første eksempelet bruker vi Merk: Dette er en fullstack-konfigurasjon, som trolig er overkill for små prosjekter. Grunnen til at jeg velger denne stillaset er å gi deg et fullt oppsettmiljø, slik at du kan se hvordan startpakken kjeller ut i en større app. Det er en header og en footer, og du kan se hvor en brukerinnlogging og registreringsfunksjon vil gå, selv om de ikke er kodet ennå i eksemplet. For å bruke yeoman, må du først installere det, og hvis du ikke har yeoman er nødvendige kolleger Installer nå React stillasene med: Opprett nå en katalog for prosjektet ditt og Bruk endelig Yeoman vil nå lage kataloger og filer som kreves; Du vil kunne se oppdateringer om dette i kommandolinjen. Med stillasene som nå er satt opp, la oss bygge prosjektet vårt: Som standard starter vi inn debug modus, og å gå live legger vi bare til Du vil nå se start og startpakke initialisering. Når dette er gjort, vil du se webpack-utdata som forteller deg detaljert informasjon om bygningen og nettadressene du vil få tilgang til fra. Få tilgang til appen din via nettadressene som er oppført på slutten av utgangen, med nettleseren din som standard på http: // localhost: 3000. For å få tilgang til nettleserens synkroniseringsadministrasjonsgrensesnitt, gå til http: // localhost: 3001. Merk: Du må kanskje åpne porten på serveren din for utviklingsporten. For ubuntu / debian brukere med Facebook gir et elektronisk verktøy hvis du bare trenger å konvertere en brikke av HTML til JSX. For større krav er det et verktøy på Å bruke det via kommandolinjen er så enkelt som: Fordi La oss begynne å jobbe med å lage en grunnleggende oppgaveliste slik at du kan se hvordan React fungerer. Før du begynner, vennligst konfigurer din IDE. Jeg anbefaler at du bruker Atom. Ved bash-prompten, installer linjene for React via apm: Merk: Den nyeste versjonen av Når det er gjort, kan vi gå videre med å lage en grunnleggende liste innenfor stillasene vi laget i det forrige trinnet med Yeoman, for å vise deg et fungerende eksempel på datastrømmen. Kontroller at serveren din er startet med Først av alt er det tre jade malfiler som tilbys i denne stillas. Vi vil ikke bruke dem til eksempelet, så begynn med å rydde ut Oppdateringen vises øyeblikkelig, uten å måtte oppdateres. Dette er den webpack og browsersync-konfigurasjonen som stillasene har gitt, trer i kraft. Åpne deretter komponentkatalogen og opprett en ny katalog: Nå inne i Også, fortsatt inne i Nå må vi legge til noen data for denne listen for å fullføre. Vi vil gjøre det inni Nå når vi lagrer, vil webpakken gjenoppbygge og browsersync vil vise endringene i nettleseren din. Ta en titt på kildekoden for å se hvordan den ble gjengitt. Vi har brukt Yeoman stillas generator Herfra redigerte vi Innsiden Her er det viktig å merke seg at React krever at alle itererte elementer har en unik identifikator gitt under For å vise listen inkluderer vi den inne i Innsiden Nå Hver gang vi sender en verdi med et attributt til en komponent, kan den nås via Endelig er et viktig poeng å merke seg at dette eksempelet benyttet seg av utvidede komponenter. Dette har mange fordeler for semantisk strukturering av koden din. Men du vil kanskje få tilgang til en mer bare-ben-tilnærming, som mange andre eksempler gjør. Så i stedet for Vel det bryter oss opp for denne introduksjonen til React. Du bør nå ha en god forståelse av følgende: I de kommende delene vil vi diskutere hvordan du bruker JSX videre, hvordan du arbeider med en database som en vedvarende datakilde, og hvordan React fungerer sammen med andre populære webteknologier som PHP, Rails, Python og .NET.Hva er JSX?
// className brukes i JSX for klassen attributt var fooDiv = ; // Render hvor div # eksempel er vår plassholder for innsetting ReactDOM.render (fooDiv, document.getElementById ('example'));
Installere React
Bruk av Facebook CDN
Installasjon fra NPM
reagere
og reagere-dom
npm pakker. For å installere disse på systemet, kjør følgende ved bash-terminalprompten i prosjektkatalogen, eller opprett en ny katalog og cd
til det først.$ npm installere - lagre reagerer-dom $ browserify -t babelify main.js -o bundle.js
node_modules
katalog.Installasjon fra Git Source
avhengig
node-versjon
og npm med npm versjon
Oppdateringskode via NVM
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.29.0/install.sh | bash
~ / .Nvm
og legger kildelinjen til profilen din (~ / Bash_profile
, ~ / .Zshrc
eller ~ / .Profile
).NVM
du kan gjøre det via git
med:git klone https://github.com/creationix/nvm.git ~ / .nvm && cd ~ / .nvm && git checkout 'git describe --abbrev = 0 --tags'
. ~ / .Nvm / nvm.sh
~ / .Bashrc
, ~ / .Profile
, eller ~ / .Zshrc
filer for å få den automatisk hentet ved innlogging.Bruke NVM
nodeliste
og de som er tilgjengelige med nod ls-fjernkontroll
. Vi trenger en versjon høyere enn 4.0.0 for å jobbe med React.$ nvm installere 4.2.1 $ nvm alias standard 4.2.1 standard -> 4.2.1 (-> v4.2.1) $ nvm bruk standard Nå bruker noden v4.2.1 (npm v2.14.7)
Bygg reaksjon fra Git Source
reagere
på systemet ditt med:git klon https://github.com/facebook/react.git
grynte
å bygge React:# grunt-cli er nødvendig av grunt; du kan ha dette installert allerede, men vi kan sørge for at følgende $ sudo npm installerer -g grunt-cli $ npm installerer $ grunt build
bygge/
katalogen har blitt fylt med alt du trenger for å bruke React. Ta en titt på / eksempler
katalog for å se noen grunnleggende eksempler som fungerer!Bruk av startpakken
helloworld.html
, legger til følgende:
.
Using a Separate JavaScript File
src/helloworld.js
and place the following code inside it:ReactDOM.render(
Hello, world!
, document.getElementById('example') ); helloworld.html
and load the script you just created using a script
tag with a text/babel
type attribute as so:
helloworld.js
blir gjort av babel.Offline Transformation
$ sudo npm installer - global babel
--global
eller -g
flagg for kort vil installere babelpakken globalt slik at den er tilgjengelig overalt. Dette er en veldig god praksis med å bruke Node for flere prosjekter og kommandolinjeverktøy.helloworld.js
Vi har nettopp opprettet i trinnet før. Ved ledeteksten fra rotkatalogen hvor du pakket ut startpakken, kjører du:$ babel src - watch - out-dir build
bygge / helloworld.js
vil bli automatisk generert når du gjør en endring! Hvis du er interessert, les Babel CLI dokumentasjonen for å få en mer avansert kunnskap.bygge / helloworld.js
, som inneholder bare rett opp JavaScript, oppdater HTML uten noen babelaktiverte skriptetiketter.
manus
tag via tekst / babel
skriv attributt. Dette er bra for utviklingsformål, men for å gå til produksjon kan vi gi en generert JavaScript-fil som kan lagres på brukerens lokale maskin.--se
flagg. Eller du kan gå et skritt videre og bruke Webpack
og browsersync
å automatisere din arbeidsflyt fullt ut. For å gjøre det på den enkleste banen mulig, kan vi automatisere oppsettet av et nytt prosjekt med en Yeoman-generator.Installere med Yeoman Stillas
reagere-fullstack
stillas fra Yeoman generatorer; Du kan se en demonstrasjon av hva sluttresultatet ser ut.bruk
gulp
, Lysthus
og grynt-cli
, installer dem som dette:$ sudo npm installere -g yo bower grunt-cli gulp
$ sudo npm installere -g generator-reagere-fullstack
cd
til det:$ mkdir reagere prosjektet $ cd reagere prosjektet
yo
kommandoen med React-fullstack stillasgeneratoren for å lage din reageringsapp i katalogen:$ yo reagerer fullstack
$ npm start
-- utgivelse
flagg, f.eks. npm kjøre start - release
.ufw
, gjør følgende:$ ufw tillate 3001 / tcp $ ufw tillate 3000 / tcp
Konvertere ditt eksisterende nettsted til JSX
NPM
for det som heter htmltojsx
. Last ned den med:npm installere htmltojsx
$ htmltojsx -c MyComponent existing_code.htm
htmltojsx
er en nodemodul, du kan også bruke den direkte i koden, for eksempel:var HTMLtoJSX = krever ('htmltojsx'); var converter = ny HTMLtoJSX (createClass: true, outputClassName: 'HelloWorld'); var output = converter.convert ('
Listeeksempel
apm installer linter linter-eslint reagerer Installere linter til /Users/tom/.atom/packages ✓ Installere linter-eslint til /Users/tom/.atom/packages ✓ Installere reager på /Users/tom/.atom/packages ✓
linter-eslint
gjorde MacBook Pro veldig sakte, så jeg deaktiverte den.npm start
, og nå la oss begynne å gjøre noen endringer.index.jade
fil så det er bare en tom fil. Når du har lagret filen, må du sjekke nettleseren og terminalutgangen.$ cd komponenter $ mkdir UserList
Userlist
katalog, opprett en package.json
fil med følgende:"navn": "UserList", "version": "0.0.0", "privat": true, "main": "./UserList.js"
Userlist
katalog, opprett UserList.js
fil og legg til følgende:// Import React Import React, PropTypes, Component fra 'reagere'; // Opprett UserList-komponentklassen UserList utvider komponent // Hovedmetoden gjengivelsen kalles i alle komponenter for visningsgjenvinning () // Uncent under for å se objektet inne i konsollen //console.log(this.props.data ); // Gjenta dataene som er oppgitt her var list = this.props.data.map (funksjon (element) return
liste
); // Gjør det tilgjengelig for resten av appen eksport standard UserList; komponenter / ContentPage / ContentPage.js
. Åpne filen og sett innholdet slik:/ *! React Starter Kit | MIT-lisens | http://www.reactstarterkit.com/ * / import React, PropTypes, Component fra 'reagere'; importer stiler fra './ContentPage.css'; importer medStyles fra '... / ... / decorators / withStyles'; importer brukerliste fra '... / brukerliste'; // Her importerer vi UserList-komponenten vi opprettet @withStyles (stiler) klasse ContentPage utvider komponent static propTypes = path: PropTypes.string.isRequired, innhold: PropTypes.string.isRequired, title: PropTypes.string; statisk kontekstTypes = onSetTitle: PropTypes.func.isRequired,; gjengivelse () // Definer noen data for listen var listData = [først: 'Peter', sist: 'Tosh', først: 'Robert', sist: 'Marley', først: 'Bunny' , sist: 'Wailer',]; this.context.onSetTitle (this.props.title); komme tilbake (
This.props.title
// Bruk UserList-komponenten som JSX Sammendrag
reagere-fullstack
å starte en React web app basert på startpakken. For en ytterligere forklaring på fil- og katalogoppsettet, sjekk ut readme i reageringspakken git repo.index.jade
filen slik at den ble nullet ut og begynte å lage vår egen visningsvisning, og opprette en ny komponent som heter Userlist
.komponenter / Userlist / UserList.js
Vi definerer hvordan listen skal gjengis med:var list = this.props.data.map (funksjon (element) return
nøkkel
Egenskap.ContentPage.js
filen med importer brukerliste fra '... / brukerliste';
og definer noen testdata med: var listData = [først: 'Peter', sist: 'Tosh', først: 'Robert', sist: 'Marley', først: 'Bunny', sist: 'Wailer',];
ContentPage.js
vi kaller Userlist
komponent med JSX
.Userlist
komponent kan få tilgang til data
attributt via this.props.data
.this.props
. Du kan også definere typen data som må oppgis ved å bruke propTypes
statisk variabel innenfor sin klasse.Utvidede komponenter vs. React.createClass Syntax
Klassen Komponentnavn utvider komponent
som du tidligere har sett i denne opplæringen, oppretter du en React-klasse med følgende syntaks, for eksempel:var MyListItem = React.createClass (render: function () return
this.props.results.map (funksjon (resultat) return
); );