mvc三个字母分别表明model, view, control.前端
下面从三个单词来扩展说,编程
view顾名思义就是一个项目的图形界面, gui部分.用户能够看到的, 进行操做的都在这上面.有图形化界面的应用通常要求对用户友好的, 简单易用无端障的.可是最主要的是让用户经过界面操做去实现功能. 因此实现功能的部分须要一些操做, 包含操做过程当中的逻辑部分, 甚至是业务逻辑部分.那么这部分就交给model去处理 ,可是这中间须要一个协调者, 去将不一样的逻辑请求分给不一样的model, 这个协调者就是controller. 因此综上所述, view层进行操做以后, 调用请求给controller, controller会找到相应的model去实现业务逻辑, model进行逻辑层处理以后, 会通知view层去将处理结果显示给用户.在这里通常view层会有一个result结果集去接收model的处理的数据. 这就是一个典型的MVC结构.后端
以下图:浏览器
可是这里的mvc结构过于耦合, 彼此之间的依赖关系太多.不便于开发进行单元测试. 因而下面介绍一个新的架构, MVVM.服务器
MVVM的核心是 view层的显示变化是根据一个数据结构关联绑定的. 这个数据结构一旦变化, 则view层显示就会跟着相应的变化.因此这个view层和model层之间绑定的数据结构被称为VM.数据结构
一般来讲VM被设计成为一个属性类.架构
图之后补上.mvc
随着技术发展, 愈来愈多的B/S架构的产品应运而生. 不少view层如今已经进入到了browser里面. 用户通常经过browser去进行一些操做.框架
而browser的操做通常都是经过get post的http去访问server的指定url中的资源. 因此因为编程模式的改变, 框架结构也发生了巨变.post
若是把HTML页面比做原来桌面应用程序的View, 服务器不管是Controller仍是Model都是没法远程遥控这个View进行处理的。传统的MVC已经不能知足这种应用.通过研究后, 产生了下面的这种结构:
不像桌面应用的MVC, 这里的Model无法给View 发通知。
实际上Controller 会选择一个View, 而后把模型数据“丢过去”渲染。
原来的View 变成了 View Template(例如JSP , Velocity等等), 通过渲染后变成HTML发给浏览器展现给用户。
有人把这种MVC称为 基于Web的 MVC,以便和以前的MVC区别开来。
是否是很是的赞.
后来因为浏览器端的业务也变得逐渐复杂起来, 从全局刷新到局部刷新, 和单页面应用程序等, 浏览器端也可使用框架.因此浏览器可使用一个框架, 服务器使用另外一个框架,
实现前端和后端彻底分离: