Utilisé par son framework React.js
Relay, annoncé à la conférence React.js de janvier 2015, est un nouveau framework de Facebook qui fournit des fonctionnalités d'extraction de données (data-fetching) pour les applications de React.
Chaque élément spécifie ses propres dépendances de données déclarativement à l'aide d'un langage de requête appelé GraphQL. Les données sont rendues accessibles au composant par l'intermédiaire de propriétés de this.props.
En pratique, les développeurs créent leurs composants React de manière naturelle et Relay s'occupe de construire les requêtes dans des objets fournissant les données nécessaires (et pas plus) à chaque composants, effectuant la mise à jour des composants lorsque les données changent et maintenant un cache client avec toutes les données.
Relay est donc une nouvelle façon de structurer les applications clientes qui regroupent l'exigences d'extraction de données et les composants de React. Au lieu de placer la logique de récupération de données dans une autre partie de l'application cliente ou de l'incorporer sur le serveur, Relay utilise l'extraction de données de manière déclarative via le langage GraphQL.
GraphQL n'a pas été inventé pour Relay. En fait, GraphQL existe depuis trois ans. Il a été inventé lors du passage des applications mobiles HTML5 de Facebook vers des applications purement natives. C'est un langage de requête pour les données de graphe qui gère l'interaction dans les applications Facebook Android et iOS.
L'objectif de Relay est de simplifier le développement afin d'obtenir des composants solides et correctement liés à leur données et ce de manière indépendante des autres composants. Notons le prédicat suivi : un composant ne sera pas affiché tant que toutes les données qu'il a demandé soient disponibles. Les requêtes sont définies de manière statique et le schéma de GraphQL fournit une description faisant autorité sur la validité des requêtes. Ainsi, les requêtes peuvent être validées dès le début.
Voici quelques caractéristiques :
- tout ce qui est inefficace ou répétitif est repris dans des requêtes minimales et efficaces ;
- le framework sait quel composant utilise quelles données et peut ainsi le mettre à jour automatiquement ;
- il est facile de créer des paterns communs comme la pagination ;
- cela simplifie l'implémentation côté serveur ;
- etc.
Introduction à Relay
Introduction à GraphQL
Et vous ?
Que pensez-vous de Relay et de GraphQL ?
Utilisez-vous les frameworks de Facebook ?
Quelle méthode utilisez-vous pour le data-fetching ?