Vue03:MVVM 和Vue

什么是MVVM?

MVVM(Model-View_ViewModel)是一种软件架构设计模式,由微软WPF(用于替代WinForm,以前就是用这个技术开发桌面应用程序的)和Silverlight(类似于Java Applet,简单点说就是在浏览器上运行的WPF)的架构师KenCooper 和Ted Peters 开发,是一种简化用户界面的事件驱动编程方式。由John Gossman (同样也是WPF和Silverlight的架构师)于2005年在他的博客上发表

MVVM 源自经典的MVC (Modle-View-Controller)模式。MVVM 的核心是ViewModel 层,复杂转换Model 中的数据对象来让数据变得更容易管理和使用,其作用如下:

  • 该层向上与视图层进行双向数据绑定

  • 向下与Model 层通过接口请求进行数据交互

为什么要使用MVVM?

MVVM 模式和MVC模式一样,主要目的是分离视图(View)和模型(Model),有几大好处:

  • 低耦合性:视图(View)可以独立于Model 变化和修改,一个ViewModel 可以绑定到不同的View 上,当View 变化的时候Model 可以不变,当Model 变化的时候,View 也可以不变

  • 可复用: 我们可以把一些视图逻辑放在一个View Model 里面,让很多View 重用这段视图逻辑

  • 独立开发:开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计

  • 可测试: 界面素来是比较难于测试的,而现在测试可以针对ViewModel 来写。

MVVM 模式的实现者?

  • Model:模型层,在这里表示JavaScript 对象

  • View:视图层,在这里表示DOM (HTML 操作的元素)

    在MVVM 架构中,是不允许数据和视图直接通信的,只能通过ViewModel 来通信,而ViewModel 就是定义了一个Observer 观察者

  • ViewModel 能够观察到数据的变化,并对视图对应的内容进行更新

  • ViewModel 能够监听到视图的变化,并能够通知数据发生改变

至此,就明白了,Vue.js 就是一个MVVM的实现者,它的核心就是实现了DOM 监听与数据绑定。

上一篇:vue03侦查器,计算属性,过滤器和过滤动画


下一篇:vue03