📜  模型视图视图模型(MVVM)简介

📅  最后修改于: 2021-05-20 05:27:00             🧑  作者: Mango

基本介绍:
[构造代码的方式]

注意:模型和视图模型之间的链接是操纵数据,视图模型和视图之间的链接是2路数据绑定。
型号说明:
模型:(可重用代码– DATA)业务对象,封装数据和应用程序域的行为,仅保存数据。
查看:(特定于平台的代码–用户界面)用户所看到的,格式化的数据。
VIEWMODEL:(可重用代码– LOGIC)链接到Model和View之间,或从Model中检索数据并将其公开给View。这是专门为View设计的模型。

特征:

  • 应用程序的生命周期状态将保持不变。
  • 该应用程序将与用户离开它的位置相同。
  • UI组件远离Business Logic。
  • 业务逻辑远离数据库操作。
  • 易于理解和阅读。

基本示例:
我们要以紫色显示名称(未以正确的格式书写,没有正确的长度),或者如果人的年龄大于18岁,则显示紫色,如果人的年龄小于18岁,则显示粉红色,那么紫色的逻辑并且Pink Color将出现在ViewModel中。

概括:
从服务器获取数据(在模型对象中可用),视图模型读取模型对象,然后方便在视图上轻松呈现数据。

MVVM和MVC之间的差异:

MVVM MVC:
The Model is somewhat similar to MVC but here we have ViewModels which are passed to the view and
all the logic is in the ViewModel and hence no controller is there. Example: Knockout.js
In this pattern, we have models which are basic objects with no code and just properties, View’s
contributes to presentation items (HTML, WinForms, etc) and Controllers focuses on the logic part.
Examples: ASP.NET MVC, Angular
In MVVM your DeletePerson would be called off of your view model We have a PersonController with an Action DeletePerson that creates a person
We are on the client side so we can hold on to objects and do a lot more logic in a non-disconnected
state.
MVC is typically used when things are transactional and disconnected as is the case with server-side
web. In ASP MVC we send the view through the wire and then the transaction with the client is over.

好处:

  • 可维护性–可以保持敏捷并保持快速发布后续版本。
  • 可扩展性–能够替换或添加新的代码段。
  • 可测试性–更容易根据核心逻辑编写单元测试。
  • 透明通信–视图模型为视图控制器提供了透明的界面,该界面用于填充视图层并与模型层进行交互,从而在应用程序各层之间实现透明的通信。

缺点:

  • 有人认为,对于简单的UI,MVVM可能会过大。
  • 在更大的情况下,可能很难设计ViewModel。
  • 当我们具有复杂的数据绑定时,调试会有些困难。