一,后端MVC模式
MVC最开始出现在后端开发中
M:model => 数据层(对数据层进行增删改查)
V : view => 视图层 (视图的显示)
C : controller => 控制器层
(1) 逻辑层 : 将数据与视图关联挂载,和基本的数据处理
服务端渲染:
view需要数据 -> 调用model层的方法 -> 操作数据 -> 获取数据 -> 将数据返回给控制器方法
-> 渲染view -> 将渲染好的html返回给前端
(2) api层 :提供方法作为前端可以请求的api,具体过程为:
前端渲染:
前端请求url -> 对应controller中的方法 -> 调用model层中的方法 -> 操作数据库 -> 获取数据
-> 将数据返回控制器的方法 -> 将数据返回给前端
二、前端MVC模式
前段MVC设计模式将 Model数据管理、View视图管理、 Controller事件触发管理分为三个模块。
model层:数据管理 -> 数据储存,监听数据变化(model改变后,触发view层视图渲染方法)。数据劫持,setter中触发view层中的render方法。
view层: 视图管理 -> 视图初始化渲染,视图渲染方法定义。定义了render函数,用于视图初始化与更新。
controller层: 事件触发管理 -> 触发事件方法的定义与绑定,数据处理(数据处理后,改变model层)。定义了事件触发函数,获取节点绑定事件,改变model层中的数据
三、MVVM模式
MVVM是从MVC基础上演进来的,该模式中,没有了Controller层,将原来controller中的事件触发函数归并到了Model层中(methods里的方法)。ViewModel层专注于视图渲染,完成了数据与视图之间的映射,减少了开发者对dom节点的操作。
四、vue的设计参照了MVVM,但未完全遵守该模型
vue的核心部分专注于视图渲染,依赖于一些插件( vue-router,vuex )渐进式地拓展成了一个框架。
MVVM中的ViewModel层是为了隔离Model层和View层,但是vue中Model层中的方法可以直接通过$ref拿到dom节点改变View层,这一点与MVVM原则相违背。
五、关于框架模型设计归类的想法
没有必要纠结一个框架的模型设计模式,有些框架的模式不那么明确,很难用一种方案或模式去总结。