Реактивне програмування та MVVM - це два підходи, які можуть вирішити проблему відділення доменного шару від інтерфейсу користувача.
- MVVM робить це, визначаючи модель перегляду, яка є структурою даних, відображеною на компоненти інтерфейсу. Користувальницький інтерфейс відображає дані та, можливо, оновлює їх у випадку виникнення користувача.
- реактивна основа визначає графік спостережуваних даних, які сповіщають інтерфейс користувача про те, що частина даних змінилася
Реактивні рамки набирають частку розуму, як в основних платформах (з Rx в .net & java, react.js), так і в більш експериментальних місцях (FRP в haskell).
В основному я використовував MVVM з кутовим, і вважаю, що співвідношення простоти до виразності є цілком задовольняючим, хоча я працював над ним лише на малих та середніх проектах.
Що реактивна основа купує розробнику, що mvvm не робить?
Чи справді є різниця? Наприклад, knockout.js рекламується як рамка mvvm, але в його інтерфейсі є реактивне відчуття:
this.firstName = ko.observable("John");
this.lastName = ko.observable("Smith");
this.fullName = ko.computed(function() {
return this.firstName() + " " + this.lastName();
}, this);