¿Cuál es su opinión sobre Flux (arquitectura de la aplicación)?

La idea principal detrás del uso de la arquitectura Flux es tener una arquitectura de aplicación simple . Esto hace que sea más fácil de mantener y razonar sobre cuándo se vuelve más complejo. Como no hay ambigüedades en la relación entre varios componentes, el trabajo se mueve.

Además de eso, Flux es consistente y repetible, lo que hace que sea muy lógico trabajar con él, al crear una acción. También es más fácil cuando desea que la Tienda sepa cómo manejar la Acción, almacenar datos y activar el evento de cambio.

Y aquí están los principales componentes de su arquitectura:

Los componentes en la arquitectura Flux interactúan más como EventBus y menos como un MVC.

Flux no es en realidad una biblioteca o un marco, es un nuevo tipo de arquitectura que Facebook usa internamente cuando trabaja con React. Por lo tanto, la función principal de Flux sería complementar React y promover el Flujo de datos unidireccionales.

Arquitectura de aplicación de flujo

En una arquitectura típica de Flux, encontrará los siguientes componentes.

  • Acciones : ayudantes que pasan datos al Despachador
  • Despachador : recibe estas acciones y difunde las cargas útiles a las devoluciones de llamada registradas.
  • Tiendas : actuar como contenedores para el estado y la lógica de la aplicación. El verdadero trabajo en la aplicación se realiza en las tiendas. Las Tiendas registradas para escuchar las acciones del Despachador lo harán en consecuencia y actualizarán las Vistas.
  • Vistas del controlador : los componentes de reacción toman el estado de las tiendas y luego lo pasan a los componentes secundarios.

Los controladores en el MVC y Flux son diferentes. Aquí los controladores son vistas de controlador y se encuentran en la parte superior de la jerarquía. Las vistas son componentes de React.

Toda la funcionalidad se encuentra generalmente dentro de la tienda. La Tienda es donde se realiza todo el trabajo y le dice al Despachador qué eventos / acciones está escuchando.

Cuando ocurre un evento, el Despachador enviaría la “carga útil” a la Tienda que está registrada para escuchar esa acción en particular. Ahora le corresponde a la Tienda actualizar la Vista, que a su vez desencadena una acción. La acción que sucederá también está predeterminada como nombre, tipo de acción, etc.

La Vista propaga la Acción a través de un Despachador central y esto se enviará a varias Tiendas. Estas tiendas contendrían la lógica comercial de una aplicación y otros datos. Actualiza todas las vistas.

Funciona mejor con el estilo de programación de React y la Tienda envía actualizaciones sin la necesidad de detallar cómo cambiar las vistas entre estados.

Esto prueba que el patrón Flux sigue un flujo de datos unidireccional. Acción, Despachador, Almacenar y Ver son nodos independientes con entradas y salidas específicas. Los datos fluyen a través del Dispatcher, el centro central, que a su vez gestiona todos los datos.

El despachador actúa como un registro con devoluciones de llamadas registradas a las que responden las tiendas. Las tiendas emitirán un cambio que será seleccionado por Controller-Views.

Esto es lo que sucede cuando una vista se propaga en el sistema:

Esto demuestra que no hay enlaces bidireccionales, la estructura es similar a la programación relativa funcional y más algo como la programación basada en flujo.

Las dependencias que se producen en las tiendas se mantienen en una jerarquía estricta, mientras que Dispatcher maneja las actualizaciones. Esta estructura también resuelve los problemas que vienen naturalmente con la unión bidireccional.

Para crear un Despachador, debe traer el Despachador de Flux. Haga esto escribiendo Dispatcher.js.

Para más publicaciones, consulte el blog de la compañía Solar Digital.

Si te gusta el comentario, ¡vota!

Descubrí que las bibliotecas de flujo basadas estrechamente en la idea de flujo inicial de Facebook todavía tienen el problema de volverse engorrosas a escalas más grandes. A medida que crece la cantidad de tiendas e interdependencias, todo comienza a salirse de control y su aplicación es confusa (aunque no tan mala como una aplicación tradicional de enlace de datos de 2 vías MVC).

Ingrese Redux: (Léame | Redux) la cura para todos los problemas que tuve con las bibliotecas de flujo. Un solo árbol de estado inmutable elimina la necesidad de cualquier coordinación. Puede tomar un poco acostumbrarse, muchas cosas que ya sabe cómo hacer requerirán una solución ligeramente diferente, pero si ya está acostumbrado a la arquitectura de flujo, entonces no será un gran salto.

Aunque inicialmente me sorprendió que para usar ajax con redux tienes que usar otra biblioteca (redux-thunk), en realidad tiene mucho sentido, redux está interesado en una sola cosa: manejar el estado para ti. Todo lo demás que puede elegir y elegir cómo lo hace.

En términos de una revisión general: sí flux / redux (o algo así como replantear en clojurescript) es una forma muy superior de estructurar grandes aplicaciones para el mantenimiento y la extensión a largo plazo en comparación con los enfoques MVC tradicionales (en mi opinión).

Si quieres echar un vistazo más de cerca a redux, entonces esta serie de videos es la mejor que he visto, el tipo básicamente codifica redux desde cero en el contexto de hacer una aplicación (no te preocupes por que haya 30 videos, ellos ‘ son solo 2-3 minutos cada uno):
Comenzando con Redux
– Curso de @dan_abramov

Los diferentes marcos de React tienen sentido para diferentes ámbitos de proyectos

• Aplicaciones muy pequeñas, widgets 1-off: Vanilla React
• Aplicaciones con necesidades de datos simples: Flux
• Aplicaciones grandes o aplicaciones con flujos de datos y eventos más complejos: Redux
• Aplicaciones grandes con ciclos de vida largos: retransmisión

Cada paso en el marco requiere más repetitivo y configuración / inversión del marco, aunque, el más cercano a una talla única para todos es Redux.

More Interesting

Cómo no permitir solo números en el cuadro de texto usando JavaScript

¿Por qué se necesitan marcos en el desarrollo web? ¿Cómo ayudan y cómo se pueden usar?

¿Cómo convierto una hoja de cálculo del tablero de Excel en una aplicación web?

¿Puede el desarrollador construir RIA con tecnologías HTML / HTML5 en lugar de Flash / Flex?

¿Cuáles son los pros y los contras de crear carpetas individuales para cada usuario en lugar de lanzar todos los archivos cargados en una sola carpeta para una aplicación web?

¿Cuáles son las cosas más importantes que debemos tener en cuenta para mantener segura la API web para una aplicación de Android?

¿Cómo realizan las personas la implementación automatizada de las aplicaciones web de Python en AWS?

¿Qué idiomas debo saber para crear aplicaciones web?

¿Cuáles son las cosas que debo considerar para desarrollar aplicaciones web de ALTA VELOCIDAD (en cualquier idioma)?

Experiencia del usuario: ¿Cómo se puede mejorar una aplicación web para el presupuesto participativo ciudadano para PCMC?

¿Cuál es la mejor alternativa a iCal para usar como calendario compartido para proyectos de la empresa?

¿Cuáles son los mejores ejemplos de integración de aplicaciones web para pequeñas empresas?

¿Existe una aplicación para cambiar manualmente el orden de las personas que sigues en Twitter?

¿Cuáles son los factores que afectan el rendimiento de una aplicación web?

Cómo crear un inicio de sesión con Facebook o Gmail para mi aplicación web usando ASP.Net MVC 5