web-dev-qa-db-fra.com

Différence entre: Redux et Relay

J'ai lu un certain nombre d'articles/documents basés sur redux et relay mais je suis toujours confus en quoi ces deux bibliothèques sont différentes?
Quels sont les avantages et les inconvénients de ces deux bibliothèques?
Quel est le rôle exact de GraphQL dans le relais?
Quelle est la bibliothèque la plus adaptée aux applications d'entreprise pilotées par les données comme CRM/ERP?

35
user sks

Les deux sont des implémentations de Flux, un cadre Facebook pour gérer l'état de l'application.

  • Redux: bibliothèque javascript générale qui aide à gérer la gestion des états dans votre application. Redux ne dépend pas des réactions et peut être utilisé avec n'importe quelle bibliothèque. Le react-redux La bibliothèque est utilisée pour intégrer facilement React avec Redux. En redux, l'état de l'application est situé dans un seul magasin, chaque composant peut accéder à l'état et peut également changer l'état en répartissant les actions. Redux ne gère pas la récupération des données hors de la boîte, bien que cela puisse être fait manuellement: créez simplement une action qui récupère les données du serveur dans le magasin.

  • Relay: Créé par facebook pour réagir, et également utilisé en interne là-bas. Le relais est similaire au redux dans la mesure où ils utilisent tous les deux un seul magasin. La principale différence est que le relais gère uniquement l'état provenant du serveur et que tous les accès à l'état sont utilisés via des requêtes GraphQL (pour la lecture des données) et des mutations (pour la modification des données). Relay met en cache les données pour vous et optimise la récupération des données pour vous, en récupérant uniquement les données modifiées et rien de plus. Le relais prend également en charge les mises à jour optimistes, c'est-à-dire changer l'état avant l'arrivée du résultat du serveur.

GraphQL est un cadre de service Web et un protocole utilisant des requêtes déclaratives et composables, et résout des problèmes comme la récupération excessive et la récupération insuffisante, il est considéré comme un candidat valide pour remplacer REST.
GraphQL ne dépend pas du relais, dans l'autre sens, le relais dépend de graphql. Graphql peut être utilisé de la même manière que toutes les autres récupérations de données.

Comme vous pouvez le voir, le principal avantage du relais sur redux est que la récupération des données est déjà prise en charge et très optimisée pour cela.
En revanche, il ne peut pas gérer l'état spécifique du client, mais cela est rarement nécessaire.

En outre, le relais IMO est plus difficile à apprendre et à mettre en œuvre, mais le résultat final est meilleur et plus optimisé, mais pour les petites applications, j'irais avec redux.

60
Gershon Papi