参考文献: https://mp.weixin.qq.com/s/LQadBnAjs9Y7QZQMOH3H5g
众所周知MVVM其实就是Model–View–ViewModel(数据模型--视图层--视图数据层)。很多同学很难理解MVVM到底是干什么的。其实很简单,下面我们来一一说明
View层 -- 视图层
View 是视图层,也就是用户界面。前端主要由 HTML 和 CSS 来构建 。你可以理解为这就是做页面布局和排版
Model层 -- 数据模型
Model 是指数据模型,泛指后端进行的各种业务逻辑处理和数据操控,对于前端来说就是后端提供的 api 接口。(可以理解为后台查询到的数据库数据)
ViewModel -- 视图数据层
ViewModel层 是由前端开发人员组织生成和维护的视图数据层。简单来说就是你拿到后台数据以后,根据后台给你Model的层数据生成符合View层 使用预期的 视图数据模型。 需要注意的是 ViewModel 所封装出来的数据模型包括视图的状态和行为两部分,而 Model 层的数据模型是只包含状态的。
比如页面的这一块展示什么,而页面加载进来时发生什么,点击这一块发生什么,这一块滚动时发生什么这些都属于视图行为(交互),视图状态和行为都封装在了 ViewModel 里。 这样的封装使得 ViewModel 可以完整地去描述 View 层。所以这一层是一个中转站(中间商)。如图:
最后,MVVM 框架实现了双向绑定,这样 ViewModel 的内容会实时展现在 View 层,前端开发者再也不必低效又麻烦地通过操纵 DOM 去更新视图,MVVM 框架已经把最脏最累的一块做好了,我们开发者只需要处理和维护 ViewModel,更新数据视图就会自动得到相应更新。这样 View 层展现的不是 Model 层的数据,而是 ViewModel 的数据,由 ViewModel 负责与 Model 层交互,这就完全解耦了 View 层和 Model 层,这个解耦是至关重要的,它是前后端分离方案实施的重要一环。
只是自己的简单理解,如有异议请留言谢谢!!!