リアクティブプログラミングとMVVMは、ドメインレイヤーをUIから分離する問題に対処できる2つのアプローチです。
- MVVMは、UIコンポーネントにマップされたデータ構造であるビューモデルを定義することでこれを行います。UIはデータを表示し、ユーザーが発生したときにデータを更新する場合があります。
- 反応フレームワークは、データの一部が変更されたことをUIに通知するオブザーバブルのグラフを定義します
リアクティブフレームワークは、主流のプラットフォーム(.netおよびjavaのRx、react.js)とより実験的な場所(haskellのFRP)の両方でマインドシェアを獲得しています。
私は主にangularで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);
MVVMは、プレゼンテーションの懸念をドメインから分離するためのパターンです。リアクティブフレームワークは、この分離パターンを実現するために使用できるツールです。彼らは排他的ではありません。
—
AlexFoxGill 14
@AlexGさて、ビューモデルとUIの間の通信を調整するツールがあります。私はそれらのMVVMフレームワークを呼び出します。
—
Simon Bergot 2014
要点は-KnockoutJS はリアクティブフレームワークを使用して、MVVMによる関心の分離を可能にします。AngularJS はダーティチェックを使用して MVVMを有効にします。それらはパターンを達成するための異なる方法です。おそらくあなたの質問は、「ダーティチェックテクニックでは実現できない、MVVMフレームワークでのリアクティブパラダイムは何を実現するのでしょうか?」
—
AlexFoxGill 2014
@AlexGなので、実装の詳細だと言えますか?それは私の質問に答えると思います。
—
Simon Bergot 2014
@Simon:実装の詳細としては認めませんが、ViewModelまでのモデルの変更を伝えるさまざまなアプローチ
—
Bart van Ingen Schenau 14