面试题 -- MVC MVVM 的区别?
# 前言
MVC 和 MVVM 是常见的软件架构设计模式,主要通过分离关注点的方式来组织代码结构,优化开发效率。
在开发单页面应用时,往往一个路由页面对应了一个脚本文件,所有的页面逻辑都在一个脚本文件里。页面的渲染、数据的获取,对用户事件的响应所有的应用逻辑都混合在一起,这样在开发简单项目时,可能看不出什么问题,如果项目变得复杂,那么整个文件就会变得冗长、混乱,这样对项目开发和后期的项目维护是非常不利的。
# MVC
- M:
Model负责存储页面的业务数据,以及对相应数据的操作。 - V:
View负责页面的显示逻辑。 - C:
Controller是 View 层和 Model 层的纽带,它主要负责用户与应用的响应操作。
当用户与页面产生交互的时候,Controller 中的事件触发器就开始工作了,通过调用 Model 层,来完成对 Model 的修改,然后 Model 层再去通知 View 层更新。

# MVVM
- M:
Model代表数据模型,数据和业务逻辑都在Model层中定义。 - V:
View代表 UI 视图,负责数据的展示。 - VM:
ViewModel负责监听Model中数据的改变并且控制视图的更新,处理用户交互操作。
Model 和 View 并无直接关联,而是通过 ViewModel 来进行联系的,Model 和 ViewModel 之间有着双向数据绑定的联系。因此当 Model 中的数据改变时会触发 View 层的刷新,View 中由于用户交互操作而改变的数据也会在 Model 中同步。
这种模式实现了 Model 和 View 的数据自动同步,因此开发者只需要专注于数据的维护操作即可,而不需要自己操作 DOM
