Format : Talk
Category : Frontend
Cette présentation s'adresse aux développeurs frontend avec une première expérience conséquente sur le framework Angular (c'est-à-dire un niveau intermédiaire - 2 ou 3 années d'expérience sur Angular).
L'objectif sera de motiver les développeurs présents lors de la présentation à investir du temps pour monter en compétences sur RxJS, en présentant les avantages que peut représenter l'utilisation de la programmation réactive pour leurs projets et leur carrière.
La présentation sera focalisée sur l'utilisation concrète de RxJS au sein d'un projet Angular, au travers de 3 cas d'implémentation courants. Pour chaque implémentation, nous présenterons un comparatif avec et sans la réactivité.
Voici une version globale de ce que nous présenterons :
Pour beaucoup de développeurs juniors, RxJS est une technologie étrange, imposée par les créateurs d'Angular dans le framework.
Mais plutôt que de subir cette décision de la Team Angular, il faut rappeler que RxJS permet de faire bien plus que des requêtes HTTP.
L'objectif sera donc de se mettre d'accord sur le problème que RxJS résout : la complexité dans la base de code.
Nous commencerons donc par définir la complexité comme la somme de 3 composantes :
Nous verrons comment RxJS permet d'adresser efficacement ces 3 composantes de la complexité.
Un des obstacles principal à l'apprentissage de RxJS est le nombre impressionnant d'opérateurs mis à disposition par la librarie (plus de 100 !)
L'objectif sera donc de rendre l'utilisation de ces opérateurs aussi digeste et intuitive que les méthodes utilisées pour le traitement d'un tableau : map
, filter
et reduce
.
Nous verrons que les +100 opérateurs de RxJS peuvent être classés en 4 catégories simples :
Pour chacune des catégories, nous verrons qu'il existe plusieurs opérateurs, car RxJS s'occupe de gèrer la dimension du temps en plus d'un simple tableau.
Cette dimension supplémentaire à l'air d'ajouter de la complexité a priori. Mais cela permet de gérer l'asynchronicité dans notre code, de manière élégante et déclarative.
Les exemples donnés dans les tutoriels ont toujours l'air d'un monde “enchanteur”, que les développeurs n'arrivent pas à appliquer concrètement dans la vraie vie par la suite…
Nous effectuerons 3 ateliers qui seront tous liés à un même requirement d'un client fictif, dans Jira. Nous traverserons 3 couches logicielles du même requirement, mais en appliquant la programmation réactive à chaque fois :
Couche de présentation (Presentational Layer)
Exemple de gestion réactive de la vue dans le cadre d'un formulaire : combineLatest, fromEvent, debounce…
Gestion de l'état (State Management)
Exemple de gestion réactive de l'état impacté par le formulaire précédent: BehaviorSubject, scan, next(), selectors & async…
Couche d'accès aux données (Data Layer)
Exemple de gestion réactive de l'accès aux données depuis un serveur distant : Requêtes HTTP & caching (HttpClientModule, catchError, timeout, map & shareReplay), Stratégies de mapping asynchrone (concatMap/mergeMap/switchMap/exhaustMap)
Une fois que l'on a découvert une nouvelle technologie et que l'on est capable de l'utiliser, il reste le plus dur… Convaincre ses collègues de changer leurs habitudes pour travailler d'une nouvelle façon.
L'objectif de cette troisième partie sera donc de convaincre le reste de son équipe de se mettre à la réactivité.
Nous présenterons un framework simple qui permet d'expliquer rapidement aux autres membres de son équipe comment utiliser RxJS au quotidien. Nous avons appelé ce framework : “Golden River, Muddy River & Golden Road”.
Ouverture : Rappelez que la programmation réactive avec RxJS est un paradigme de programmation qui peut-être utilisé en dehors d'Angular. (Notamment dans les autres frameworks frontend React & VueJS)
Question & Réponses : Répondre aux objections éventuelles et autres questions ouvertes.
Le déroulement de la présentation sera un talk plutôt classique, composé principalement de slides et de questions au public tout au long de la présentation.