Redux & RxJS, des similitudes?
Je sais Redux est une meilleure "mise en œuvre" de Flux, ou mieux de dire que c'est une refonte afin de simplifier les choses (l'état de l'application de gestion).
J'ai beaucoup entendu parler de réactif de programmation (RxJS), mais je n'ai pas plongé à apprendre encore.
Donc ma question est: existe-il une intersection (rien en commun) entre ces deux technologies ou sont-ils complémentaires? ...ou totalement différents?
Vous devez vous connecter pour publier un commentaire.
En bref, ils sont très différents des bibliothèques pour des raisons très différentes, mais oui, il y a quelques vagues ressemblances.
Redux est un outil pour la gestion de l'état tout au long de l'application. Il est habituellement utilisé comme une architecture de l'Isu. Pensez-y comme une alternative à la moitié) Angulaire.
RxJS est un réactif de programmation de la bibliothèque. Il est généralement utilisé comme un outil pour accomplir des tâches asynchrones en JavaScript. Pensez-y comme une alternative à des Promesses.
Réactif de programmation est un paradigme (façon de travailler et de penser), où les modifications de données sont observé à partir d'une distance. Les données ne sont pas changé à partir d'une distance.
Voici un exemple de changé à partir d'une distance:
La Modèle est modifié à partir du Contrôleur.
Voici un exemple de observé à partir d'une distance:
Dans l'Enregistreur de données, nous observons les changements qui se produisent dans le Magasin (de loin), et d'écrire dans la console.
Redux utilise le Réactif de paradigme juste un peu: le Magasin est réactif. Vous ne définissez pas de son contenu à distance. C'est pourquoi il n'y a pas de
store.set()
dans Redux. Le Magasin observe d'actions à partir d'une distance, et les changements de lui-même. Et le Magasin permet aux autres de respecter ses données à distance.RxJS utilise également le Réactif de paradigme, mais au lieu d'être une architecture, il vous donne des blocs de construction de base, Observables, pour accomplir cette "observation à partir d'une distance" modèle.
Pour conclure, des choses très différentes à des fins différentes, mais partagent certaines idées.
Ils sont des choses très différentes.
RxJS peut être utilisé pour faire Réactif de Programmation et est un très approfondie de la bibliothèque avec plus de 250 opérateurs.
Et Redux est comme décrit sur le dépôt github "Redux est un état prévisible de conteneur pour les applications JavaScript".
Redux est juste un outil pour gérer l'état des applications. Mais, en comparaison, vous pouvez construire une application complète en seulement RxJS.
Espère que cela aide 🙂
Vous pouvez "mettre en œuvre" Redux en une seule ligne de RxJS. Si vous envisagez de Rx pour d'autres raisons (à la peau des promesses, de l'utiliser sur le serveur et le client), puis passez Redux et aller tout Rx.
Je voulais juste ajouter quelques pragmatique des différences à partir de quand j'ai fait Redux-inspiré RxJS-code.
Je l'ai associé à chaque type d'action à un Objet de l'instance.
Chaque stateful volet, un Sujet qui est alors mappé à un réducteur de fonction.
Tous réducteur de flux sont combinés avec
merge
et puisscan
sorties de l'état.La valeur par défaut est définie avec
startWith
juste avant lascan
. J'ai utilisépublishReplay(1)
pour les états, mais peut enlever plus tard.La réagir rendu pur aura pour seul endroit où vous produire les données de l'événement par l'envoi de tous les producteurs/les Sujets.
Si vous avez des enfants, vous devez décrire la façon dont ces états sont combinés dans le vôtre.
combineLatest
pourrait être un bon point de départ pour que.Des différences notables dans la mise en œuvre:
Aucun middleware, juste rxjs opérateurs. Je pense que c'est la plus grande puissance et la faiblesse. Vous pouvez toujours emprunter des concepts, mais je trouve difficile d'obtenir de l'aide auprès des communautés-sœurs comme redux et cycle.js puisque c'est encore une autre solution personnalisée. C'est pourquoi j'ai besoin d'écrire "je" au lieu de "nous" dans ce texte.
Pas d'interrupteur/cas ou des chaînes de caractères pour les types d'action. Vous avez plus dynamique de la séparation d'actions.
rxjs peut être utilisé comme un outil d'ailleurs, et n'est pas contenu pour la gestion de l'état.
Un moins grand nombre de producteurs de types d'action(?). Je ne suis pas sûr à ce sujet, mais vous pouvez avoir de nombreuses réactions dans les composants parent à l'écoute des composants enfants. Que signifie moins de code impératif, et moins de complexité.
Vous possédez la solution. Pas de cadre nécessaire. Les bonnes et les mauvaises. Vous allez vous retrouver l'écriture de votre propre cadre de référence, de toute façon.
Il est beaucoup plus fractales, et vous pouvez facilement vous abonner à des changements à partir d'un sous-arbre, ou de plusieurs parties de l'application de l'état de l'arbre.
Je travaille aussi sur beaucoup plus grands avantages lorsque l'enfant composants sont décrits comme des ruisseaux. Cela signifie que nous n'avons pas à complect parent et de l'enfant de l'état dans les réducteurs, puisque nous pouvons juste ("juste") de manière récursive combiner les membres en fonction de la structure des composants.
Je pense aussi que de sauter de réagir et d'aller avec snabbdom ou autre chose, jusqu'à ce que Réagir poignées réactif états de mieux. Pourquoi devrions-nous construire notre etat vers le haut juste pour casser vers le bas par des étais de nouveau? Donc je vais essayer de faire une version 2 de ce modèle avec Snabbdom.
Voici un plus avancés mais petit extrait où l'etat.ts fichier construit à l'état de flux. C'est l'ajax formulaire état du composant qui reçoit un objet de champs (entrées) avec des règles de validation et de styles css. Dans ce fichier, on utilise simplement les noms de champ (clés de l'objet) pour combiner tous les enfants des états dans l'état.
Alors que le code peut ne pas en dire beaucoup dans l'isolement, il montre comment vous pouvez créer de l'état vers le haut, et comment vous pouvez produire des événements dynamiques avec facilité. Le prix à payer est que vous avez besoin de comprendre un autre type de code. Et j'adore prix à payer.
À mettre en bref:
Redux: Flux inspiré de la Bibliothèque utilisée pour la Gestion de l'État.
RxJS: C'est une autre librairie Javascript basé sur le réactif de philosophie de programmation, utilisé pour traiter les "Flux" (Observables, etc.) [Lisez à propos de Réactif de Programmation à comprendre le Flux de concepts].
Redux est un juste un état de gestion de la bibliothèque sont à venir avec des normes bien définies pour les opérations de mise à jour. Autant que vous vous en tenez à des normes que vous pouvez garder votre flux de données saine et facile à la raison. Il apporte également la capacité d'améliorer le flux de données avec les middlewares et de stocker des amplificateurs.
RxJS est une boîte à outils pour la programmation réactive. Vous pouvez effectivement penser à chaque chose qui se passe dans votre application comme un flux. RxJS donne un très riche ensemble d'outils pour gérer ces flux.
Où RxJS et Redux intercepte? Dans redux vous mettez à jour votre état avec des actions et, évidemment, ces actions peuvent être traités comme des ruisseaux. À l'aide d'un middleware comme redux-observables (vous n'avez pas à), vous pouvez mettre en œuvre votre soi-disant "logique d'entreprise" de manière réactive. Une autre chose est que vous pouvez créer une observable à partir de votre redux magasin qui pourrait parfois être plus facile que d'utiliser un activateur.