backbone.js reactjs reactjs-flux

backbone.js - Flux+React vs Backbone+React



reactjs reactjs-flux (6)

¿Cuáles son las ventajas de Flux + React sobre Backbone + React? ¿Existen diferencias de rendimiento además de la facilidad de desarrollo del código para una gran base de código complejo?

¿Qué pasa si tenemos una relación 1: 1 entre el modelo y una vista de reacción en una aplicación que usa Backbone + React?


+1 respuesta de Vetrenko Maxim con respecto a la integración de la red troncal y el patrón de arquitectura. Flux es un patrón de flujo de datos para las aplicaciones de React y puede usar cualquier marco de almacenamiento / modelo de datos que desee.

Las ventajas de usar Flux + React:

  • Una comprensión más fácil del flujo de datos
  • Mejor organización del código
  • problemas de depuración de datos más fáciles con los modelos
  • compartimentar el almacén de datos / código de modelo de vistas

Hay varios frameworks de modelos para usar, prefiero www.js-data.io para React + Flux.


Flux es un patrón arquitectónico que impone un flujo direccional de datos. El patrón Flux es genérico y no es específico de las aplicaciones Reaccionar. Con Flux, se evitará el flujo de datos mal definido y la falta de integridad de los datos.

Si va a elegir Backbone, puede combinar esos dos siempre y cuando sepa cuándo utilizar Flux way y Backbone.


Flux es un patrón de arquitecto para construir la aplicación React. De modo que puede usar modelos y colecciones Backbone dentro de sus tiendas para buscar y almacenar datos.

Y si desea usar solo la función DOM virtual de React, no es necesario usar reaccionar.js. Hay muchas bibliotecas que agregan la función DOM virtual a su aplicación ( https://github.com/Matt-Esch/virtual-dom ).

Mi recomendación : si va a utilizar el patrón Flux, le recomiendo usar http://facebook.github.io/immutable-js/ (puede combinarse con http://ampersandjs.com/ ; no olvide definir su función de sincronización personalizada si está creando aplicaciones isomórficas). Básicamente, no hay ninguna ventaja en el uso de modelos troncales con React (la red troncal es pesada, necesita un guión bajo, que es lento; en su lugar, utilizo https://lodash.com/ ).


La colección de modelos de Backbone es mutable, mientras que reaccionar se basa en un tema, la inmutabilidad. Por lo tanto, técnicamente el uso de Backbone + React está haciendo un Anti Pattern. He usado tanto reaccionar + backbone como reaccionar + flujo. Definitivamente preferiré reaccionar + flujo sobre otros.


Las tiendas IMHO Flux no son incompatibles con los modelos / colecciones Backbone. Probablemente pueda usar las colecciones Backbone como tiendas Flux, siempre y cuando las integre con el despachador Flux y les permita emitir un evento para activar una representación.

Simplemente no estoy seguro de que los modelos Backbone estén destinados a ser estructuras de datos inmutables en primer lugar, por lo que es más difícil para React optimizar la renderización.

También diría que nunca encontré realmente todos estos modelos de Backbone / métodos de colección realmente útiles. En una arquitectura Flux, las solicitudes de API tienden a ser activadas por creadores de acciones y no por las tiendas directamente, lo que permite que múltiples tiendas escuchen la misma finalización de solicitud.

¿Dónde debe hacerse la solicitud de ajax en la aplicación Flux?


Una cosa buena de React es que es independiente: puede usarlo sin problemas con los modelos y colecciones de Backbone.

Flux es una arquitectura sugerida, pero creo que el modelo es tan diferente de MVC que, al final del día, no vale la pena intentar usar ambos: Use React with Flux O React with Backbone models and collections.

No recomendaría usar modelos / colecciones Backbone como tiendas Flux, no son lo mismo. La razón principal es que una tienda de flujo no puede ser mutada desde el exterior, no proporciona setters. Una tienda Flux muta su propio estado en respuesta a las acciones. E incluso si sigue el camino "Flux" utilizando los modelos Backbone como tiendas, su código aún tiene posibilidades abiertas para la manipulación directa del estado desde fuera de la tienda que podría ser mal utilizado por otros miembros del equipo, por ejemplo ...