MVVM架构学习

一、MVVM简介

是一种软件架构模式,是MVC的改进版,MVVM将其中View的状态和行为抽象化,让我们将视图的UI和业务上的逻辑进行分开。

简单来说,MVVM是Model-View-ViewModel的简写,即是模型-视图-视图模型。

 

model - 模型

指的是后端传过来的数据。

view - 视图

指的是所有看到的页面,可以理解为将数据以某种方式呈现给用户。

ViewModel

指的是视图模型,他是连接view和model的桥梁。

从上面的图片可以大致看到,有两个不同的方向。

1.模型-->视图

解析:将后端数据转换为前端的页面。实现的方式是数据绑定

2.视图-->模型

解析:将前端页面转换为后端数据的实现方式:叫做Dom数据监听

存在两个方向都能实现的情况下,叫做数据的双向绑定。

更深层次了解MVVM,我们需要了解MVC架构,从MVC来理解MVVM演变和出现。

二、MVC是什么?

MVC的全称是Model View Controller。MVC是Model-View-Controller的简写。MVC的目的是讲M和V的代码进行分离,且MVC是单向通信,即View和Model,必须是通过Controller来承上启下,Controller指的是页面的逻辑,他对用户的请求进行接收,并将Model返回给用户。

三、ViewModel和Controller的关系

MVC与MVVM的区别

有人会产生疑惑,是不是VM取代了C呢?其实并不是这样子,因为ViewModel存在的目的是为了抽离Controller中展示的业务逻辑,而不是取代Controller,其他视图操作的业务还是放到Controller中实现。也就是说MVVM实现的是业务逻辑组件的重用。

四、MVC的问题

MVC的架构模式只能满足轻量级的应用开发,在过去可以满足开发者的开发需求。

但是在过去的10年时间中,我们已经把许多传统服务器的代码,从服务器端放到浏览器当中,这样子就产生了成千上万行的JavaScript代码,他们连接了各式各样的HTML、CSS,但是缺乏正规的组织形式,这就是越来越多的前端开发者使用JavaScript框架了,如angular、vue等。

浏览器的兼容问题已经不再是前端的阻碍了,随着HTML5的发展,HTML5开发应用由于越来越趋近于原生APP,这导致HTML5的应用越来越庞大和越来越复杂,这就使得MVC架构已经无法满足和解决开发需求,前端的项目越来越大,项目的可维护性和扩张性、安全性成了主要的问题。

当年为了解决浏览器的兼容问题,出现了很多类库,其中最典型的就是jquery。但是这类的类库没有实现对业务和逻辑的分离,所以维护性和扩展性很差,出现了三个问题。

1.开发者在代码中大量调用相同的DOM的API,处理繁琐,操作冗余,使得代码难以维护。

2.大量的DOM操作使得页面渲染的性能降低,加载的速度变慢,用户体验差。

3.难以维护复杂多变的状态:当Model频繁发生变化的时候,开发者需要主动更新到View,当用户操作导致Model发生变化的时候,开发者同样需要将变化的数据同步到Model中。

五、MVVM对MVC的完善

MVVM就是将其中的View的状态和行为抽象化,让我们的视图UI和业务逻辑进行分离。

在MVVM架构下,View和Model没有直接的联系,而是通过ViewModel进行数据交互,Model和ViewModel之间的交互是双向的,因此View数据的变化会同步到Model中,Model数据的变化也会立即反应到View上面。

ViewModel通过双向数据绑定把View和Model层连接起来,而View和Model之间的同步工作是完全自动的,不需要进行人为的干涉,因此开发者只需要关注业务逻辑,不需要手动操作Dom,不需要关注数据状态的同步问题,复杂的数据状态的维护完全由MVVM来进行管理。

总结

MVVM模型的好处是,除了获得分离之外,还可以实现模型和视图之间的分离,MVVM模型的功效是获得了一个无需查看即可轻松更改的一致模型。实施MVVM的重要关键的要素是可测试性,可维护性和可扩展性。MVVM的对于模型和视图的隔离,大大方便了开发者对于数据状态的维护与管理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值