title: Architecture Patterns around Angular2: Redux, Flux, React, Reactive, RxJS, Ngrx, MVI,
body: <p>All the names of these libraries/frameworks begin with the letter R/N or sound very similar; irritations are guaranteed:</p>
  
  <p><strong>react/redux | flux | ngrx | @ngrx/store | RxJS/ReactiveX | MVI | ....</strong></p>
  
  <p><strong>Can anyone see through this madness?</strong> <strong>I am trying to clarify, please help me, if I'am wrong:</strong></p>
  
  <p><strong><a href="http://redux.js.org/" rel="noreferrer">Redux</a></strong> is a "predictable state container" for JavaScript apps and a lightweight  implementation of <strong><a href="https://facebook.github.io/flux/" rel="noreferrer">Flux</a></strong>. Can I say: It is the standard implementation of flux for Angular2? (But there are also great <a href="https://egghead.io/courses/getting-started-with-redux" rel="noreferrer">lerning videos about redux</a> without Angular2.)</p>
  
  <p><strong><a href="https://facebook.github.io/flux/" rel="noreferrer">Flux</a></strong> is the application architecture that Facebook uses for building client-side web applications. It complements <strong><a href="https://facebook.github.io/react/" rel="noreferrer">React's</strong> (ReactJS)</a> composable view components by utilizing a unidirectional data flow. But flux is only a pattern, not an implementation. </p>
  
  <p><strong><a href="https://facebook.github.io/react/" rel="noreferrer">React</strong> (ReactJS)</a> is the main competitor of <a href="https://angular.io/" rel="noreferrer"><strong>Angular2</strong> (angular.io)</a>, although it is rather a big library than a framework.</p>
  
  <p><a href="https://github.com/Reactive-Extensions/RxJS" rel="noreferrer"><strong>Reactive Extensions for JavaScript (RxJS)</strong></a> is a reactive streams library that allows you to work with asynchronous data streams. It pursues the objectives of the <a href="http://www.reactivemanifesto.org/" rel="noreferrer"><strong>Reactive-Manifesto.</strong></a></p>
  
  <p>Angular2 has it's own Reactive Extensions and they are called as <a href="https://github.com/ngrx" rel="noreferrer"><strong>Ngrx - Reactive Extensions for Angular2.</strong></a></p>
  
  <p>Then there is something like <strong><a href="https://github.com/ngrx/store" rel="noreferrer">@ngrx/store</a></strong>, which is RxJS powered state management inspired by Redux for Angular 2 apps. Oops-a-daisy!</p>
  
  <p>As an alternative to Flux, <a href="https://twitter.com/andrestaltz" rel="noreferrer">André Staltz</a> has presented the unidirectional <a href="http://futurice.com/blog/reactive-mvc-and-the-virtual-dom" rel="noreferrer"><strong>Model-View-Intent (MVI) architecture</strong></a>, based on RxJS Observables, which he uses as the basis for <a href="http://cycle.js.org/" rel="noreferrer"><strong>Cycle.js</strong></a>. Whilst Angular 2 does have a form of two-way data binding, it does not prescribe a data flow architecture. One of it's selling features is being pattern agnostic and that it will work with an MVC or a Flux architecture. Therefore it's up to as developers to choose an appropriate pattern. <a href="http://blog.lambda-it.ch/reactive-data-flow-in-angular-2/" rel="noreferrer">>> Source</a></p>