A programação reativa e o MVVM são duas abordagens que podem solucionar o problema de separar a camada de domínio da interface do usuário.
- O MVVM faz isso definindo um viewmodel, que é uma estrutura de dados mapeada para os componentes da interface do usuário. A interface do usuário exibe os dados e talvez atualize-os quando o usuário ocorrer.
- uma estrutura reativa define um gráfico de observáveis que notificam a interface do usuário que alguns dados foram alterados
Estruturas reativas estão ganhando participação, tanto em plataformas convencionais (com Rx em .net e java, react.js) quanto em locais mais experimentais (FRP em haskell).
Eu usei principalmente o MVVM com angular e considero a taxa de simplicidade para expressividade bastante satisfatória, embora eu tenha trabalhado apenas em projetos pequenos / médios com ele.
O que uma estrutura reativa compra para o desenvolvedor que o mvvm não?
Existe realmente alguma diferença? Por exemplo, knockout.js é anunciado como uma estrutura mvvm, mas tem uma sensação reativa em sua interface:
this.firstName = ko.observable("John");
this.lastName = ko.observable("Smith");
this.fullName = ko.computed(function() {
return this.firstName() + " " + this.lastName();
}, this);