Flux + React vs Backbone + React

Quels sont les avantages de Flux + React over Backbone + React. Existe-t-il des différences de performances en plus de la facilité de développement de code pour une base de code complexe et énorme.

Et si nous avions une relation 1: 1 entre le modèle et une vue de réaction dans une application utilisant Backbone + React?

Flux est un modèle d’architecte pour créer une application React. Vous pouvez donc utiliser les modèles et les collections Backbone dans vos magasins pour récupérer et stocker des données.

Et si vous souhaitez utiliser uniquement la fonctionnalité Virtual DOM de React, il n’est pas nécessaire d’utiliser react.js. Il existe de nombreuses bibliothèques, ajoutant la fonctionnalité Virtual DOM à votre application ( https://github.com/Matt-Esch/virtual-dom ).

Ma recommandation : si vous utilisez le pattern Flux, je vous recommande fortement d’utiliser http://facebook.github.io/immutable-js/ (peut être couplé avec http://ampersandjs.com/ ; n’oubliez pas de définir votre fonction de synchronisation personnalisée si vous créez une application isomorphe). Fondamentalement, il n’ya aucun avantage à utiliser les modèles de backbone avec React (le backbone est lourd, il a besoin de souligner, ce qui est lent; j’utilise plutôt https://lodash.com/ ).

Les magasins IMHO Flux ne sont pas incompatibles avec les modèles / collections Backbone. Vous pouvez probablement utiliser les collections Backbone en tant que magasins Flux, à condition de les intégrer au répartiteur Flux et de leur permettre d’émettre un événement pour déclencher un rendu.

Je ne suis pas sûr que les modèles Backbone soient conçus pour être des structures de données immuables en premier lieu, ce qui rend plus difficile pour React d’optimiser le rendu.

Je dirais aussi que je n’ai jamais vraiment trouvé tous ces modèles / méthodes de collections Backbone vraiment utiles. Dans une architecture Flux, les demandes d’API ont tendance à être déclenchées par les créateurs d’actions et non par les magasins directement, permettant ainsi à plusieurs magasins d’écouter la même exécution de la demande.

Où faut-il faire la demande ajax dans l’application Flux?

Une chose intéressante à propos de React est qu’elle est agnostique – vous pouvez l’utiliser avec les modèles et les collections Backbone sans problème.

Flux est une architecture suggérée, mais je pense que le modèle diverge tellement avec MVC qu’à la fin de la journée, il n’est pas utile d’essayer de les utiliser tous les deux – Utilisez React avec Flux ou React avec les modèles et les collections Backbone.

Je ne recommanderais pas d’utiliser les modèles / collections Backbone en tant que magasins Flux – ce n’est pas la même chose. La principale raison étant qu’un magasin de stream ne peut pas être modifié de l’extérieur – il ne fournit aucun paramètre. Un stream store modifie son propre état en réponse à des actions. Et même si vous suivez la méthode “Flux” en utilisant les modèles Backbone en tant que magasins, votre code offre toujours des possibilités de manipulation directe de l’état en dehors du magasin qui pourraient être mal utilisées par d’autres membres de l’équipe, par exemple …

La collection de modèles de Backbone est mutable alors que la réaction se situe sur un thème, l’immuabilité. Donc, techniquement en utilisant Backbone + React fait un Anti Pattern. J’ai utilisé à la fois réagir + backbone et réagir + stream. Je préférerais certainement réagir + stream par rapport aux autres.

+1 La réponse de Vetrenko Maxim concernant l’intégration du backbone et du modèle d’architecture. Flux est un modèle de stream de données pour les applications React et peut utiliser n’importe quel cadre de stockage de données / modèle souhaité.

Les avantages de l’utilisation de Flux + React:

  • Meilleure compréhension du stream de données
  • Meilleure organisation du code
  • Débogage plus facile des problèmes de données avec les modèles
  • compartimenter le code magasin / modèle de données des vues

Il existe plusieurs frameworks de modèles à utiliser, je préfère http://www.js-data.io pour React + Flux.

Flux est un modèle architectural qui impose un stream de données directionnel. Le pattern Flux est générique et il n’est pas spécifique aux applications React. Avec Flux, le stream de données mal défini et le manque d’intégrité des données seront évités.

Si vous choisissez Backbone, vous pouvez combiner ces deux éléments à condition de savoir utiliser la méthode Flux et la méthode Backbone.