SlideShare a Scribd company logo
1 of 35
Download to read offline
From 0 to React
with ES6 and Tests
JavaSpritz - Napoli 4 luglio 2017 - Davide Cerbo
Davide
Davide Cerbo
10+ anni di esperienza
Full stack
DevDay co-founder
Faccio codice, vedo gente
DevDay Napoli
Cosa è React?
React è una libreria per la UI,
in MVC è la V
+
Angular o React?
Disclaimer
Questa presentazione non contiene tutto lo
scibile su REACT e ES6, ma solo quello che
ritengo sia utile per iniziare.
Ancora meglio!
Introduzione a ES6
● Arrows
● Classes
● Modules
Arrows
● var f = (a,b) => a + b; // f(1,2) = 3
● [“a”, ”b”, “c”].map(v => v.toUpperCase()); // [“A”, “B”, “C”]
● Lexical this
Classes
Modules
Ed ancora...
● Promises
● Text template
● Destructuring
● etc…
https://github.com/lukehoban/es6features
Components
<ComponentA />
<ComponentB />
<ComponentC />
<ComponentB />
One-way data binding
<ComponentA />
<ComponentB />
<ComponentC />
<ComponentB />
Non è HTML, ma è JSX
<div className=”box” style={ {backgroundColor: ”red”} }>
{variabileAPiacere}
</div>
Virtual DOM
● React utilizza una rappresentazione virtuale
del DOM
● Usa un algoritmo di differenza tra alberi ed
una euristica O(n^3) => O(n)
● Questo garantisce elevate prestazioni
State & props
Le proprietà sono opzioni del
componente che vengono passate dal
padre al figlio e sono immutabili
Lo stato rappresenta la situazione
attuale dell’oggeto ed è mutabile.
setState
this.setState({counter: this.state.counter + props.step});
OPPURE
this.setState((prevState, props) => {
return {counter: prevState.counter + props.step};
});
E mo’,
Sporchiamoci
le mani
Demo con NWB
https://github.com/insin/nwb
npm install -g nwb
nwb new react-app spritzapp && cd spritzapp
npm start
http://localhost:3000
Solo la chiamata al
setState causa
l’aggiornamento
In base allo stato
cambia la
visualizzazione
Componente
personalizzato
Arrow function
Performance
cattive :(
Arrow function
https://medium.freecodecamp.org/react-pattern-extract-child-components-to-avoid-binding-e3ad8310725e
Performance
migliori :)
React stateless functional components
https://hackernoon.com/react-stateless-functional-components-nine-wins-you-
might-have-overlooked-997b0d933dbc
Testing
● Mocha: Test framework
● Chai: Assertion
● Karma: Test Runner
● Sinon: Spy
Link e risorse
● https://egghead.io/series/react-flux-architecture
● https://facebook.github.io/react/
● https://www.youtube.com/watch?v=bEI06xF_xxE (Video in italiano)
● https://www.youtube.com/watch?v=-A90OnLeWfA (Video in italiano)
● https://www.youtube.com/watch?v=ET0KWjoRMao (Video in italiano)
● https://code-cartoons.com/a-cartoon-intro-to-redux-3afb775501a6
● https://code-cartoons.com/a-cartoon-guide-to-flux-6157355ab207
● React Native Framework https://getexponent.com/
● React Native “unofficial” blog http://reactnative.com/
● Webpack @RomaJS https://www.youtube.com/watch?v=mkcyvJNBPUk
● https://bogdan-lyashenko.github.io/Under-the-hood-ReactJS/
● Interface design with React.js @RomaJS https://www.youtube.com/watch?v=twi6h0H925c
Una vera applicazione?
Guardate qui:
https://github.com/gothinkster/react-redux-realworld-example-app
Grazie a tutti
@davide_cerbo
davidecerbo@gmail.com

More Related Content

Similar to From 0 to React with ES6 and Tests

Sviluppo Rapido Di Applicazioni Con Grails
Sviluppo Rapido Di Applicazioni Con GrailsSviluppo Rapido Di Applicazioni Con Grails
Sviluppo Rapido Di Applicazioni Con GrailsAlberto Brandolini
 
Introduzione a JavaScript e jQuery (1/2)
Introduzione a JavaScript e jQuery (1/2)Introduzione a JavaScript e jQuery (1/2)
Introduzione a JavaScript e jQuery (1/2)Giuseppe Vizzari
 
Tech Webinar: Test e2e per AngularJS e non solo
Tech Webinar: Test e2e per AngularJS e non soloTech Webinar: Test e2e per AngularJS e non solo
Tech Webinar: Test e2e per AngularJS e non soloCodemotion
 
Applicazioni Web ultra-performanti con Vue.js e Delphi
Applicazioni Web ultra-performanti con Vue.js e DelphiApplicazioni Web ultra-performanti con Vue.js e Delphi
Applicazioni Web ultra-performanti con Vue.js e DelphiMarco Breveglieri
 
Struttin' on, novità in casa Struts
Struttin' on, novità in casa StrutsStruttin' on, novità in casa Struts
Struttin' on, novità in casa StrutsMarcello Teodori
 
Introduzione a java script
Introduzione a java scriptIntroduzione a java script
Introduzione a java scriptMatteo Ceserani
 
Introduzione a React Native - Mokapp 2017
Introduzione a React Native - Mokapp 2017Introduzione a React Native - Mokapp 2017
Introduzione a React Native - Mokapp 2017Fabrizio Bernabei
 
CommitUniversity AngularJSAdvanced Andrea Vallotti
CommitUniversity  AngularJSAdvanced Andrea VallottiCommitUniversity  AngularJSAdvanced Andrea Vallotti
CommitUniversity AngularJSAdvanced Andrea VallottiCommit University
 
Clean android code - Droidcon Italiy 2014
Clean android code - Droidcon Italiy 2014Clean android code - Droidcon Italiy 2014
Clean android code - Droidcon Italiy 2014Fabio Collini
 
Migliora il tuo codice con knockout.js
Migliora il tuo codice con knockout.jsMigliora il tuo codice con knockout.js
Migliora il tuo codice con knockout.jsAndrea Dottor
 
Sviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle MonorailSviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle MonorailDotNetMarche
 
Aspect Oriented Programming
Aspect Oriented ProgrammingAspect Oriented Programming
Aspect Oriented ProgrammingAndrea Bozzoni
 
Sviluppo di un prototipo di interfaccia per la verbalizzazione degli esami on...
Sviluppo di un prototipo di interfaccia per la verbalizzazione degli esami on...Sviluppo di un prototipo di interfaccia per la verbalizzazione degli esami on...
Sviluppo di un prototipo di interfaccia per la verbalizzazione degli esami on...LeD87
 
Introduzione ad ASP.NET Core
Introduzione ad ASP.NET CoreIntroduzione ad ASP.NET Core
Introduzione ad ASP.NET CoreAndrea Dottor
 
Testing in javascript
Testing in javascriptTesting in javascript
Testing in javascriptPiero Bozzolo
 
Introduzione a Ruby On Rails
Introduzione a Ruby On RailsIntroduzione a Ruby On Rails
Introduzione a Ruby On RailsLuca Mearelli
 
Rich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.jsRich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.jsGiorgio Di Nardo
 

Similar to From 0 to React with ES6 and Tests (20)

Sviluppo Rapido Di Applicazioni Con Grails
Sviluppo Rapido Di Applicazioni Con GrailsSviluppo Rapido Di Applicazioni Con Grails
Sviluppo Rapido Di Applicazioni Con Grails
 
Introduzione a JavaScript e jQuery (1/2)
Introduzione a JavaScript e jQuery (1/2)Introduzione a JavaScript e jQuery (1/2)
Introduzione a JavaScript e jQuery (1/2)
 
Tech Webinar: Test e2e per AngularJS e non solo
Tech Webinar: Test e2e per AngularJS e non soloTech Webinar: Test e2e per AngularJS e non solo
Tech Webinar: Test e2e per AngularJS e non solo
 
Applicazioni Web ultra-performanti con Vue.js e Delphi
Applicazioni Web ultra-performanti con Vue.js e DelphiApplicazioni Web ultra-performanti con Vue.js e Delphi
Applicazioni Web ultra-performanti con Vue.js e Delphi
 
Struttin' on, novità in casa Struts
Struttin' on, novità in casa StrutsStruttin' on, novità in casa Struts
Struttin' on, novità in casa Struts
 
Introduzione a java script
Introduzione a java scriptIntroduzione a java script
Introduzione a java script
 
Introduzione a React Native - Mokapp 2017
Introduzione a React Native - Mokapp 2017Introduzione a React Native - Mokapp 2017
Introduzione a React Native - Mokapp 2017
 
CommitUniversity AngularJSAdvanced Andrea Vallotti
CommitUniversity  AngularJSAdvanced Andrea VallottiCommitUniversity  AngularJSAdvanced Andrea Vallotti
CommitUniversity AngularJSAdvanced Andrea Vallotti
 
Clean android code - Droidcon Italiy 2014
Clean android code - Droidcon Italiy 2014Clean android code - Droidcon Italiy 2014
Clean android code - Droidcon Italiy 2014
 
Migliora il tuo codice con knockout.js
Migliora il tuo codice con knockout.jsMigliora il tuo codice con knockout.js
Migliora il tuo codice con knockout.js
 
AngularJS-Intro
AngularJS-IntroAngularJS-Intro
AngularJS-Intro
 
Testing
TestingTesting
Testing
 
Sviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle MonorailSviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle Monorail
 
Sviluppare SPA con Vue
Sviluppare SPA con VueSviluppare SPA con Vue
Sviluppare SPA con Vue
 
Aspect Oriented Programming
Aspect Oriented ProgrammingAspect Oriented Programming
Aspect Oriented Programming
 
Sviluppo di un prototipo di interfaccia per la verbalizzazione degli esami on...
Sviluppo di un prototipo di interfaccia per la verbalizzazione degli esami on...Sviluppo di un prototipo di interfaccia per la verbalizzazione degli esami on...
Sviluppo di un prototipo di interfaccia per la verbalizzazione degli esami on...
 
Introduzione ad ASP.NET Core
Introduzione ad ASP.NET CoreIntroduzione ad ASP.NET Core
Introduzione ad ASP.NET Core
 
Testing in javascript
Testing in javascriptTesting in javascript
Testing in javascript
 
Introduzione a Ruby On Rails
Introduzione a Ruby On RailsIntroduzione a Ruby On Rails
Introduzione a Ruby On Rails
 
Rich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.jsRich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.js
 

More from Davide Cerbo

Kotlin: forse è la volta buona (Trento)
Kotlin: forse è la volta buona (Trento)Kotlin: forse è la volta buona (Trento)
Kotlin: forse è la volta buona (Trento)Davide Cerbo
 
Kotlin: foss' a vota bona (could be the right time)
Kotlin: foss' a vota bona (could be the right time)Kotlin: foss' a vota bona (could be the right time)
Kotlin: foss' a vota bona (could be the right time)Davide Cerbo
 
Il web intelligente
Il web intelligenteIl web intelligente
Il web intelligenteDavide Cerbo
 
Working between the clouds (versione completa)
Working between the clouds (versione completa)Working between the clouds (versione completa)
Working between the clouds (versione completa)Davide Cerbo
 
The Hitchhiker's Guide to testable code: semplici regole per scrivere codice ...
The Hitchhiker's Guide to testable code: semplici regole per scrivere codice ...The Hitchhiker's Guide to testable code: semplici regole per scrivere codice ...
The Hitchhiker's Guide to testable code: semplici regole per scrivere codice ...Davide Cerbo
 
Working between the clouds
Working between the cloudsWorking between the clouds
Working between the cloudsDavide Cerbo
 
Non Conventional Android Programming (English)
Non Conventional Android Programming (English)Non Conventional Android Programming (English)
Non Conventional Android Programming (English)Davide Cerbo
 
Non Conventional Android Programming (Italiano)
Non Conventional Android Programming (Italiano)Non Conventional Android Programming (Italiano)
Non Conventional Android Programming (Italiano)Davide Cerbo
 

More from Davide Cerbo (10)

Kotlin: forse è la volta buona (Trento)
Kotlin: forse è la volta buona (Trento)Kotlin: forse è la volta buona (Trento)
Kotlin: forse è la volta buona (Trento)
 
Kotlin: foss' a vota bona (could be the right time)
Kotlin: foss' a vota bona (could be the right time)Kotlin: foss' a vota bona (could be the right time)
Kotlin: foss' a vota bona (could be the right time)
 
Di cosa parlano?
Di cosa parlano?Di cosa parlano?
Di cosa parlano?
 
Adesso In Onda
Adesso In OndaAdesso In Onda
Adesso In Onda
 
Il web intelligente
Il web intelligenteIl web intelligente
Il web intelligente
 
Working between the clouds (versione completa)
Working between the clouds (versione completa)Working between the clouds (versione completa)
Working between the clouds (versione completa)
 
The Hitchhiker's Guide to testable code: semplici regole per scrivere codice ...
The Hitchhiker's Guide to testable code: semplici regole per scrivere codice ...The Hitchhiker's Guide to testable code: semplici regole per scrivere codice ...
The Hitchhiker's Guide to testable code: semplici regole per scrivere codice ...
 
Working between the clouds
Working between the cloudsWorking between the clouds
Working between the clouds
 
Non Conventional Android Programming (English)
Non Conventional Android Programming (English)Non Conventional Android Programming (English)
Non Conventional Android Programming (English)
 
Non Conventional Android Programming (Italiano)
Non Conventional Android Programming (Italiano)Non Conventional Android Programming (Italiano)
Non Conventional Android Programming (Italiano)
 

From 0 to React with ES6 and Tests