composant + CommonJs Très performant (Virtual Dom) Permet de faire du SSR (Server Side Rendering) et donc de l’isomorphisme (SEO, First Render Performance) Très adapté au pattern Flux (plus scalable que MVC) Facebook powered (et en prod chez eux depuis des années), donc bien fini et robuste
et à comprendre Pas de concurrence et effet de bord Performances (mémoïsation) Meilleure visibilité des fluxs de données Détection des changements Plus simple à tester https://scott.mn/2014/04/27/why_immutable_collections/ Cache, Undo & Redo, …
'c'); //ordonnée Stack Map et OrderedMap : var map1 = Immutable.Map({js:'AngularJS',css:'Bootstrap'}); //non ordonnée Set et OrderedSet : var set1 = Immutable.Set([1,2,3]); Record : var MyType = Immutable.Record({a:1, b:2, c:3}); //taille fixe et valeur par défaut var t1 = new MyType({a: 10, b:20}); Seq : var oddSquares = Immutable.Seq.of(1,2,3,4,5,6,7,8).filter(x => x % 2).map(x => x * x);
définie les « datas » dont il a besoin Les « datas » sont données aux props du composant Relay s’occupe de : composer les requêtes et de les batcher si nécessaire, de ne donner aux composants que les données dont ils ont besoin. Il va updater les composants nécessitant d’être modifié lorsque les données changent, et maintenir un cache local.
niveau du composant Règler un maximum de problème de performance Eviter l’over-fetching et l’under-fetching sur les composants Un seul endpoint GraphQL (ou deux : Lecture/écriture) Optimistic update ⚠️ Pas encore Open Source !
applis natives en Js avec React Experience web : pas d’étape de compilation Déja en production sur l’appStore iOs : Facebook Groups Facebook Ads Manager
natifs dans du web => Résultat toujours mauvais Développer en utilisant les capacités native de la plateforme Amener toutes les qualités de React dans l’environnement natif Complexité de la mise en forme et styling sur natif 60 FPS Améliorer le débuggage
fond, sur un thread différent de la « vue » Modifications envoyées par « batch » et de manière « asynchrone » Transformation du Js via JSCore (Moteur Js de iOs) Au lieu d’écrire du HTML en JSX, on utilise des composants React mappés sur des composants Natif
avec Jest pour les composants Js Tests d’intégration XCTestCase pour les composants Natif et Js Snapshot Tests avec FBSnapshotTestCase : https://github.com/facebook/ios-snapshot-test-case
d’écriture Bridge Js <=> Natif Flexbox pour le positionnement Débugging « à la » web - Tout neuf Peu de composants encore (Pull To Refresh, Vidéo …) iOs only pour le moment Xcode (et donc mac only)