响应式编程和MVVM模式,用于管理GUI更新


11

响应式编程和MVVM是可以解决将域层与UI分离的问题的两种方法。

  • MVVM通过定义视图模型来实现此目的,该视图模型是映射到UI组件的数据结构。UI显示数据,并可能在用户出现时进行更新。
  • 一个反应式框架定义了一个可观察的图形,该图形通知UI某些数据已更改

在主流平台(.net和java中的Rx,react.js)和更多实验性的地方(在Haskell中的FRP)中,反应性框架都在引起人们的关注。

我主要使用带有角度的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 2014年

@AlexG好吧,有一些工具可以协调视图模型和UI之间的通信。我称这些为MVVM框架。
西蒙·贝格

关键点-KnockoutJS 使用反应框架来实现MVVM分离关注点。AngularJS 使用脏检查来启用MVVM。它们只是实现模式的不同方式。也许您的问题是:“反应式范例在MVVM框架中实现了肮脏检查技术所没有的作用?”
AlexFoxGill 2014年

@AlexG,所以您会说这是一个实现细节?我认为它回答了我的问题。
西蒙·贝格

@Simon:我不会将其视为实现细节,而是更多地作为向ViewModel传达模型变化的不同方法
Bart van Ingen Schenau 2014年

Answers:


10

这些是不同的非竞争性概念,可以轻松地协同工作以产生出色的结果。

用外行的话来说:

MVVM有助于摆脱背后的代码混乱(GUI /模型耦合)。反应性方法对于减少事件/回调混乱非常有用。

我建议您学习一些有关XAML / WPF的知识,因为Microsoft是MVVM的原始发明者。Microsoft还提供了一个很好的Reactive方法实施:Reactive Extensions。

这是结合它们的一种不错的尝试:

http://www.reactiveui.net https://github.com/reactiveui/ReactiveUI

相关的SO问题:

/programming/1763411/reactive-extensions-rx-mvvm

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.