MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式: M层,模型层,程序应用功能的实现,负责数据数据管理及数据生成 V层,视图层,负责输出,处理如何调用模板,资源文件 C层,控制器层,负责根据请求决定调用的界面,以及处理数据
客户端请求项目的控制器,如果执行过程中需要用到数据,控制器就会到模型中获取数据,再将获取到数据通过视图显示出来。
客户端通过v层发送请求到C层,控制器根据请求调用M层,处理数据之后返回控制器,调用相对应的V层 返回客户端。
将代码进行分层分类。主要是为了解决web开发中的分离开发与设计工作,使其工作相对独立,因为目录结构比较清晰,所以便于网站以后的维护与扩展。
耦合性低:视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。 生命周期成本低:MVC使开发和维护用户接口的技术含量降低。
可维护性高:分离视图层和业务逻辑层也使得WEB应用更易于维护和修改。
不适合中小型规模的应用程序:花费大量时间将MVC应用到规模并不是很大的应用程序通常会得不偿失。 增加系统结构和实现的复杂性:对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。
视图与控制器间的过于紧密的连接:视图与控制器是相互分离,但却是联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。
M-Model:数据结构表示 ,读取本地数据,处理弱业务。 V-View:展示数据,处理非逻辑交互事件。 C-Controller:处理主要业务逻辑,处理交互事件,协调V-M数据流。 S-Store:负责数据的存储,数据本地持久化。
MVCS是基于MVC衍生出来的一套架构方案,概念来说,拆分的部分是Model部分,拆出来一Store,用来专门负责数据存取。
从上面的分工可知C,V同MVC架构是完全一样的,只有M的数据存储任务被分离了出来。即:S分担了M的数据管理任务,那么M和S其实都是数据管理的逻辑范畴了。 一句话概括:(M+S):管理数据, C:处理数据, V:展示数据。
MVVM为了解决前端的响应式编程而生,由于前端网页混合了HTML、CSS和Javascript,而且页面众多,代码的组织维护难度复杂,所以东莞过ViewModel实现View和Model的双向绑定。
M-model: 数据结构表示、读取本地数据、写数据到本地、处理弱业务。 V-View:展示数据、处理非逻辑交互事件。 C-Controller:处理交互事件、协调V-M数据流。 VM-ViewModel:处理主要业务逻辑。
从上面的分工可知,VM分担了C中的数据加工任务,将业务处理放到了ViewModel中,其他的M,V同MVC架构完全一样。
一句话概括:M:管理数据, (C+VM):处理数据, V:展示数据。
MVVM与MVC最大的区别就是:它实现了View和Model的自动同步,也就是当Model的属性改变时,我们不用再自己手动操作Dom元素,来改变View的显示,而是改变属性后该属性对应View层显示会自动改变
mvcs mvvm 都是基于mvc框架 延伸出的框架结构。熟悉mvc框架之后另外两个都是很容易上手的。而任务的分配方法以mvc任务分配方案为基础,按一定原则进行个性化分配。 1.保留当前角色的主要功能,拆分次要功能。 2.弱业务功能放到Model中,尽量不要放到Controller里去。 3.拆分出去的业务功能尽量封装成可复用组件、对象或协议。 4.控制好拆分粒度,调用接口少参或无参。