Flux é um padrão de projetos criados pelos engenheiros do Facebook, onde se tem, por padrão, o fluxo unidirecional dos dados (single direction data flow). Padrão esse popularmente usado no front-end das aplicações.
A view envia ações que descrevem o que aconteceu. A store recebe essas actions e determina quais mudanças de estado devem ocorrer. Após o estado ser atualizado, o novo estado é enviado para a view.
Todos os dados fluem através do dispatcher, que é como um hub central. As ações são fornecidas ao dispatcher em um método criador de ação e, na maioria das vezes, são originadas pelas interações do usuário com as views.
O dispatcher invoca, então, as devoluções de chamada que as stores registraram, enviando ações para todas as stores. Dentro das devoluções de retorno registradas, as stores respondem a qualquer ação relevante para o estado que eles mantêm.
Elas emitem um evento de alteração para alertar as views do controlador que ocorreu uma alteração na camada de dados. Controller-views escutam esses eventos e recuperam dados das stores em um manipulador de eventos.
As controller-views chamam seu próprio método setState (), causando uma re-renderização de si mesmos e todos os seus descendentes na árvore do componente.
- Características
- Fluxo único de dados
- Não sofre alterações em cascata
- Previsível
- Ações descritivas
- Lógica contida em um único ponto (store)
- Flexível para ser usada em pequenas e grandes aplicações
Estou me aventurando nesse novo design pattern – é um conceito novo pra mim, utilizando a implementação desse padrão para Vue, o Vuex.
É bastante diferente do que eu usava de arquitetura web e vem se mostrando bem interessante. Quem não conhece, recomendo ficar por dentro do assunto e entender.
Abraços!