Top Banner
React(ive) Dive into the one-player architecture Pierre Guilleminot @jinroh Alexandre Duros @alexduros
40

[Meet-Up] ReactJS & Reactive Programming

Jan 10, 2017

Download

Engineering

Canal+ Dev
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: [Meet-Up] ReactJS & Reactive Programming

React(ive) Dive into the one-player architecture

Pierre Guilleminot @jinroh

Alexandre Duros @alexduros

Page 2: [Meet-Up] ReactJS & Reactive Programming
Page 3: [Meet-Up] ReactJS & Reactive Programming
Page 4: [Meet-Up] ReactJS & Reactive Programming

React(ive)

Page 5: [Meet-Up] ReactJS & Reactive Programming

React(ive)“C’est comme Angular ?”

Page 6: [Meet-Up] ReactJS & Reactive Programming

React(ive)“C’est mieux que Backbone ?”

“C’est comme Angular ?”

Page 7: [Meet-Up] ReactJS & Reactive Programming

React(ive)“C’est comme Angular ?”

“C’est mieux que Backbone ?”

“Est-ce que ça marche avec jQuery ?”

Page 8: [Meet-Up] ReactJS & Reactive Programming

React(ive)“C’est comme Angular ?”

“C’est mieux que Backbone ?”

“Est-ce que ça marche avec jQuery ?”

Page 9: [Meet-Up] ReactJS & Reactive Programming

#1 Ceci n’est pas un framework

Page 10: [Meet-Up] ReactJS & Reactive Programming

● 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

Page 11: [Meet-Up] ReactJS & Reactive Programming

#2 Tout n’est que <Composant/>

Page 12: [Meet-Up] ReactJS & Reactive Programming
Page 13: [Meet-Up] ReactJS & Reactive Programming
Page 14: [Meet-Up] ReactJS & Reactive Programming
Page 15: [Meet-Up] ReactJS & Reactive Programming

● facile à réutiliser

● vit sa vie indépendamment (lifecycle)

● testable

#2 Tout n’est que <Composant/>

Page 16: [Meet-Up] ReactJS & Reactive Programming

#3 Tout est dans le render

Page 17: [Meet-Up] ReactJS & Reactive Programming

#3 Tout est dans le render

Page 18: [Meet-Up] ReactJS & Reactive Programming

#3 Tout est dans le renderdéclaratif

JSX friendly = templating

Page 19: [Meet-Up] ReactJS & Reactive Programming

#4 Et un composant, c’est composable

Page 20: [Meet-Up] ReactJS & Reactive Programming

#5 Virtual DOM

Page 21: [Meet-Up] ReactJS & Reactive Programming

#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

Page 22: [Meet-Up] ReactJS & Reactive Programming

#6 Immutabilité des props

Page 23: [Meet-Up] ReactJS & Reactive Programming

● Transmises par le parent

● Immutables

● Accessibles via this.props

#6 Immutabilité des props

Page 24: [Meet-Up] ReactJS & Reactive Programming

#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

Page 25: [Meet-Up] ReactJS & Reactive Programming

Credits● Reactjs and why it’s awesome by Andrew Hull

● React.js conf 2015 playlist by Facebook Developers

Page 26: [Meet-Up] ReactJS & Reactive Programming

Un peu de théorie…juste un peu

Page 27: [Meet-Up] ReactJS & Reactive Programming

f(State) → <UI/>React =

fonction pure de projection d’un état vers une interface

Page 28: [Meet-Up] ReactJS & Reactive Programming

f(StateA) → <UIA/>

f(StateB) → <UIB/>

f(StateC) → <UIC/>

Page 29: [Meet-Up] ReactJS & Reactive Programming

StateA StateB StateC

<UIA/> <UIB/> <UIC/>

render render render

Page 30: [Meet-Up] ReactJS & Reactive Programming

position de lecture

programme courant

décalage live

liste des chaines

chaine courante

liste des programmes

rating csaprofile

utilisateur

Page 31: [Meet-Up] ReactJS & Reactive Programming

position de lecture

programme courant

décalage live

liste des chaines

chaine courante

liste des programmes

rating csaprofile

utilisateur

Page 32: [Meet-Up] ReactJS & Reactive Programming

position de lecture

programme courant

décalage live

liste des chaines

chaine courante

liste des programmes

rating csaprofile

utilisateur

Page 33: [Meet-Up] ReactJS & Reactive Programming

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

Page 34: [Meet-Up] ReactJS & Reactive Programming

Quelle est la différence entre un tableau et des événements ?

Page 35: [Meet-Up] ReactJS & Reactive Programming

map, filter, reduce, concat, uniq, drop, (et plus encore)

sur des événements ?

Events = Collection + Temps

Page 36: [Meet-Up] ReactJS & Reactive Programming

Observables

• TC39 proposal pour ajout dans ES2016 (ES7)

• Support natif dans React, Angular2 et Ember

• Existe en Java, Rust, …pick your language

Page 37: [Meet-Up] ReactJS & Reactive Programming

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

Page 38: [Meet-Up] ReactJS & Reactive Programming

• 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)

Page 39: [Meet-Up] ReactJS & Reactive Programming

• Map • Reduce • Filter • Zip • Merge • Concat • FlatMap • Take • Skip • …

• Delay • Buffer • Debounce • Throttle • …

Page 40: [Meet-Up] ReactJS & Reactive Programming

Démo