Upgrade to Pro — share decks privately, control downloads, hide ads and more …

React, retour d'expériences

Avatar for Armand Abric Armand Abric
September 23, 2015

React, retour d'expériences

Présentation réalisé lors de la 5ème édition du MarseilleJS chez VeryLastRoom le 23 septembre 2015

Version originale disponible sur gitthub : http://spy-seth.github.io/marseillejs-react-xp-presentation/

Avatar for Armand Abric

Armand Abric

September 23, 2015

Other Decks in Programming

Transcript

  1. L'ÉCOSYSTÈME VERYLASTROOM (JANVIER 2015) Des applications mobiles Android et iOS

    Utilisation massive d'API rest pour communiquer Plusieurs technologies : Objective-C Java PHP et un peu de JavaScript
  2. UN NOUVEAU CHALLENGE : LE SITE WEB Forte habitude des

    « applications » : séparation parfaite entre le client et le serveur UI moderne Difficile a réaliser avec une stack traditionnelle (PHP coté serveur et JS dans le client) Duplique beaucoup de code métier entre le client et serveur Twig c'est bien, mais en fait non Demande des développeurs à doubles compétences So old school On aime les challenges
  3. LE CHALLENGE Délais : 4 mois inextensibles (campagne marketing) Maturité

    : React est en beta Maitrise : Personne de chez nous n’avait mis en production du node Ressources : un développeur PHP/JS et un développeur iOS Equipe renforcée par un développeur PHP/JS
  4. POC POC POC ? Ce que nous voulions valider :

    React Flux Isomorphisme Compatibilé navigateurs (coucou IE8)
  5. ENSEIGNEMENTS TIRÉS ❤ ❤ ❤ React ❤ ❤ ❤ React

    seul est extrêment simple Le JSX est un vrai bonheur à utiliser Flux est un pattern théorique inutilisable en l'état Parvenir à l'isomorphisme est très contraignant Stack complexe à mettre en œuvre : système de build à créer de zéro NB : Depuis nos débuts avec cette stack beaucoup de progrès ont été réalisés. Il est maintenant beaucoup plus facile d'initialiser un projet React/Flux isomorphique.
  6. « REACT SEUL EST EXTRÊMENT SIMPLE » 1/2 React est

    un simple appel à une fonction avec des paramètres R e a c t . r e n d e r ( < S a y H e l l o t o = " J e a n - M i c h e l " / > , d o c u m e n t . g e t E l e m e n t B y I d ( ' e x a m p l e - h e l l o - w o r l d ' ) ) ; R e a c t . r e n d e r ( R e a c t . c r e a t e E l e m e n t ( s a y H e l l o , { t o : " J e a n - M i c h e l " } , d o c u m e n t . g e t E l e m e n t B y I d ( ' s a y - h e l l o - c o n t a i n e r ' ) ) ;
  7. « REACT SEUL EST EXTRÊMENT SIMPLE » 2/2 Isolation parfaite

    des composants entre eux Le JSX exprime l'état final du DOM on se concentre sur le HTML que l'on veut générer... ... et non sur la mutabilité du DOM Rend explicite le métier de la GUI
  8. EXEMPLE v a r D e a l L i

    s t P a g e = R e a c t . c r e a t e C l a s s ( { / * . . . * / r e n d e r : f u n c t i o n ( ) { v a r c i t y = t h i s . s t a t e . c i t y ; v a r n o w = D a t e . n o w ( ) ; r e t u r n ( < d i v c l a s s N a m e = " d e a l - l i s t - p a g e - c o m p o n e n t " > { c i t y . h a s S a l e s O p e n ( n o w ) ? < O p e n e d S a l e s C i t y c i t y = { c i t y } / * . . . * / / > : < C l o s e d S a l e s C i t y c i t y = { c i t y } / > } < / d i v > ) ; } } ) ;
  9. « PARVENIR À L'ISOMORPHISME EST TRÈS CONTRAIGNANT » Il faut

    être capable de démarer l'application coté client à partir de l'état dans lequel on l'a laissé coté serveur Transfert des données entre le client et le serveur Partage des composants Différences importantes entre les deux environements
  10. OUTILLAGES DE BASE r e a c t f l

    u x i b l e par Yahoo e x p r e s s : serveur http r e a c t - r o u t e r : routeur i n t l + r e a c t - i n t l : i18n b r o w s e r i f y : processus de build Attention troll : mais pas de j Q u e r y
  11. CONCLUSIONS Faire le GUI avec React c'est agréable React +

    Flux + Isomophisme = complexité Une stack favorisant le DDD et CQRS