首先我们需要先了解每个缩写下的含义,MVC(Model Controller View),MVVM(Model View ViewModel)是前端现在比较主流的架构,其中 Model是数据模型,Controller是控制器,View是视图,ViewModel是数据解析。
在MVC架构阶段中:
- View 负责终端界面展示,它的设计应该可以展示任意数据,不应该只适配某一个 Model,否则不利于View层的拓展。
- Model 负责处理数据,它的设计应该只是存粹的数据处理,不应该为了适配某个 View,在内部进行数据解析和封装,否则不利于Model层的扩展。
- Controller 在处理完业务逻辑后,负责维护两者之间数据传递,更新 Model 改变状态,数据传递给 View 进行展示,维持数据的同步。
在 MVC 的架构设计中,我们会将很多的数据,业务处理都集中在 Controller ,导致 Controller 非常的臃肿,其实按照 MVC 架构设计中,Controller 只负责以下几点内容:
- 管理自己的生命周期
- 处理 Controller之间的跳转
- 作为 View 的容器
结合上文内容不难发现,在MVC架构中并没有专门设计负责数据解析的阶段,导致后端代码越来越难维护,简化前端代码复杂度,所以在后来的开发者就提出了 ViewModel 专门处理数据解析,来抽离部分后端代码。
在MVVM架构设计中,降低了 Controller 的存在感,减少了其内部的代码,将 Controller 设计提高成一个顶层调度者,调度多个 ViewModel 解析后数据,进行封装再展示给 View 。在后期Controller设计中,一旦设计到数据处理,此时将应该将代码转移到 ViewModel 中。
View的变化会自动更新到ViewModel,ViewModel的变化也会自动同步到View上显示。这种自动同步是因为ViewModel中的属性实现了Observer,当属性变更时都能触发对应的操作