SlideShare une entreprise Scribd logo
1  sur  40
Télécharger pour lire hors ligne
React(ive)
Dive into the one-player architecture
Pierre Guilleminot
@jinroh
Alexandre Duros
@alexduros
React(ive)
React(ive)
“C’est comme Angular ?”
React(ive)
“C’est mieux que Backbone ?”
“C’est comme Angular ?”
React(ive)
“C’est comme Angular ?”
“C’est mieux que Backbone ?”
“Est-ce que ça marche avec
jQuery ?”
React(ive)
“C’est comme Angular ?”
“C’est mieux que Backbone ?”
“Est-ce que ça marche avec
jQuery ?”
#1 Ceci n’est pas un framework
● Librairie javascript permettant de
construire des interfaces utilisateurs
● Pas de notions de contrôleurs,
directives, modèles, etc.
● On ne parle que de la vue
#2 Tout n’est que <Composant/>
● facile à réutiliser
● vit sa vie indépendamment (lifecycle)
● testable
#2 Tout n’est que <Composant/>
#3 Tout est dans le render
#3 Tout est dans le render
#3 Tout est dans le render
déclaratif
JSX friendly = templating
#4 Et un composant, c’est composable
#5 Virtual DOM
#5 Virtual DOM
● Plus léger car ne contient que les
informations nécessaires
● Permet une représentation dans un
contexte headless
● Rendu optimisé
● Testable
#6 Immutabilité des props
● Transmises par le parent
● Immutables
● Accessibles via this.props
#6 Immutabilité des props
#7 Mutabilité du state
state render
● state mise à jour via setState
● déclenche un render du virtual DOM
● acessible via this.state peut être transmis
par les props
● transmission unidirectionnel des changements
Credits
● Reactjs and why it’s awesome by Andrew Hull
● React.js conf 2015 playlist by Facebook Developers
Un peu de théorie…
juste un peu
f(State) → <UI/>
React =
fonction pure de projection d’un état vers une interface
f(StateA) → <UIA/>
f(StateB) → <UIB/>
f(StateC) → <UIC/>
StateA StateB StateC
<UIA/> <UIB/> <UIC/>
render render render
position de
lecture
programme
courant
décalage live
liste des
chaines
chaine
courante
liste des
programmes
rating csa
profile
utilisateur
position de
lecture
programme
courant
décalage live
liste des
chaines
chaine
courante
liste des
programmes
rating csa
profile
utilisateur
position de
lecture
programme
courant
décalage live
liste des
chaines
chaine
courante
liste des
programmes
rating csa
profile
utilisateur
13h30 14h30 15h30 10h15
BBT
JT
Scandal
M6 Boutique
Scène de ménage
Zone Interdite
Canal+ M6
position
chaine
programmes
+
+
=
BBT M6 BoutiqueLE programme JT Scandal
Quelle est la différence entre un
tableau et des événements ?
map, filter, reduce, concat, uniq, drop,
(et plus encore)
sur des événements ?
Events = Collection + Temps
Observables
• TC39 proposal pour ajout dans ES2016 (ES7)
• Support natif dans React, Angular2 et Ember
• Existe en Java, Rust, …pick your language
Quand les utiliser ?
(en frontend)
Dès que l’on fait du code asynchrone (tout le temps ?):
• Animations
• XHR / HTTP / WebSocket
• Entrée utilisateur
• Back pressure
• Encapsuler les états de votre applications qui sont
des valeurs qui changent au cours du temps
• Fournis les opérateurs fonctionnels pour composer
ces valeurs:
Quand les utiliser ?
(en frontend)
• Map
• Reduce
• Filter
• Zip
• Merge
• Concat
• FlatMap
• Take
• Skip
• …
• Delay
• Buffer
• Debounce
• Throttle
• …
Démo

Contenu connexe

En vedette

ParisJS #10 : PhantomJs
ParisJS #10 : PhantomJs ParisJS #10 : PhantomJs
ParisJS #10 : PhantomJs
Maurice Svay
 

En vedette (20)

A Documentation Crash Course, LinuxCon 2016
A Documentation Crash Course, LinuxCon 2016A Documentation Crash Course, LinuxCon 2016
A Documentation Crash Course, LinuxCon 2016
 
SimpleDb, an introduction
SimpleDb, an introductionSimpleDb, an introduction
SimpleDb, an introduction
 
Offre développeur Javascript Back-end
Offre développeur Javascript Back-endOffre développeur Javascript Back-end
Offre développeur Javascript Back-end
 
Contentful Berlin Offices
Contentful Berlin OfficesContentful Berlin Offices
Contentful Berlin Offices
 
Automate your docs, automate yourself
Automate your docs, automate yourselfAutomate your docs, automate yourself
Automate your docs, automate yourself
 
Erlang introduction geek2geek Berlin
Erlang introduction geek2geek BerlinErlang introduction geek2geek Berlin
Erlang introduction geek2geek Berlin
 
The Anatomy of Content Management (workshop by J Gollner at Intelligent Conte...
The Anatomy of Content Management (workshop by J Gollner at Intelligent Conte...The Anatomy of Content Management (workshop by J Gollner at Intelligent Conte...
The Anatomy of Content Management (workshop by J Gollner at Intelligent Conte...
 
AWS Lambda in infrastructure
AWS Lambda in infrastructureAWS Lambda in infrastructure
AWS Lambda in infrastructure
 
Le futur de Drupal et des applications web
Le futur de Drupal et des applications webLe futur de Drupal et des applications web
Le futur de Drupal et des applications web
 
Distributed and concurrent programming with RabbitMQ and EventMachine Rails U...
Distributed and concurrent programming with RabbitMQ and EventMachine Rails U...Distributed and concurrent programming with RabbitMQ and EventMachine Rails U...
Distributed and concurrent programming with RabbitMQ and EventMachine Rails U...
 
Devoxx France 2015 - Se préparer à l'arrivée d'Angular 2
Devoxx France 2015 - Se préparer à l'arrivée d'Angular 2Devoxx France 2015 - Se préparer à l'arrivée d'Angular 2
Devoxx France 2015 - Se préparer à l'arrivée d'Angular 2
 
Back to the future with static site generators
Back to the future with static site generatorsBack to the future with static site generators
Back to the future with static site generators
 
ParisJS #10 : PhantomJs
ParisJS #10 : PhantomJs ParisJS #10 : PhantomJs
ParisJS #10 : PhantomJs
 
Erlang as a cloud citizen, a fractal approach to throughput
Erlang as a cloud citizen, a fractal approach to throughputErlang as a cloud citizen, a fractal approach to throughput
Erlang as a cloud citizen, a fractal approach to throughput
 
Google : Prise en charge de l'Ajax et de l'Angular JS
Google : Prise en charge de l'Ajax et de l'Angular JSGoogle : Prise en charge de l'Ajax et de l'Angular JS
Google : Prise en charge de l'Ajax et de l'Angular JS
 
API Days Australia - Automatic Testing of (RESTful) API Documentation
API Days Australia  - Automatic Testing of (RESTful) API DocumentationAPI Days Australia  - Automatic Testing of (RESTful) API Documentation
API Days Australia - Automatic Testing of (RESTful) API Documentation
 
Finally, Professional Frontend Dev with ReactJS, WebPack & Symfony (Symfony C...
Finally, Professional Frontend Dev with ReactJS, WebPack & Symfony (Symfony C...Finally, Professional Frontend Dev with ReactJS, WebPack & Symfony (Symfony C...
Finally, Professional Frontend Dev with ReactJS, WebPack & Symfony (Symfony C...
 
Contentful
ContentfulContentful
Contentful
 
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUES
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUESARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUES
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUES
 
CasperJS
CasperJSCasperJS
CasperJS
 

Dernier (6)

Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
 
pdfcoffee.com_4-production-fond-des-puits-completion-pdf-free.pdf
pdfcoffee.com_4-production-fond-des-puits-completion-pdf-free.pdfpdfcoffee.com_4-production-fond-des-puits-completion-pdf-free.pdf
pdfcoffee.com_4-production-fond-des-puits-completion-pdf-free.pdf
 
mémoire genie civil presenté lors de la soutenance de mémoire
mémoire genie civil presenté lors de la soutenance de mémoiremémoire genie civil presenté lors de la soutenance de mémoire
mémoire genie civil presenté lors de la soutenance de mémoire
 
le probleme de la planification JSP exposee (2) (2).pptx
le probleme de la planification JSP exposee (2) (2).pptxle probleme de la planification JSP exposee (2) (2).pptx
le probleme de la planification JSP exposee (2) (2).pptx
 
JTC 2024 Bâtiment et Photovoltaïque.pdf
JTC 2024  Bâtiment et Photovoltaïque.pdfJTC 2024  Bâtiment et Photovoltaïque.pdf
JTC 2024 Bâtiment et Photovoltaïque.pdf
 
Algo II: les files cours + exercices corrigés
Algo II: les files cours + exercices corrigésAlgo II: les files cours + exercices corrigés
Algo II: les files cours + exercices corrigés
 

[Meet-Up] ReactJS & Reactive Programming