La programación reactiva y MVVM son dos enfoques que pueden abordar el problema de separar la capa de dominio de la interfaz de usuario.
- MVVM hace esto definiendo un modelo de vista, que es una estructura de datos asignada a componentes de la interfaz de usuario. La interfaz de usuario muestra los datos y puede actualizarlos cuando ocurre el usuario.
- Un marco reactivo define un gráfico de observables que notifican a la interfaz de usuario que algún dato ha cambiado.
Los marcos reactivos están ganando participación mental, tanto en las plataformas principales (con Rx en .net y java, react.js) como en lugares más experimentales (FRP en haskell).
Principalmente he usado MVVM con angular, y encuentro que la relación de simplicidad a expresividad es bastante satisfactoria, aunque solo he trabajado en proyectos pequeños / medianos con él.
¿Qué compra un framework reactivo al desarrollador que mvvm no?
¿Existe realmente una diferencia? Por ejemplo, knockout.js se anuncia como un marco mvvm, pero tiene una sensación reactiva en su interfaz:
this.firstName = ko.observable("John");
this.lastName = ko.observable("Smith");
this.fullName = ko.computed(function() {
return this.firstName() + " " + this.lastName();
}, this);