曾经,我非常羡慕那些人见人爱的人,我也想要变成那样,可是后来我才明白人见人爱也是需要天赋的,后来我开始默默努力,我想,就算我不能让每个人都喜欢我,至少因为我做的努力能得到别人的尊重。

MVC

 MVC即Model、View、Controller,即模型、视图、控制器,这不是框架,而是一种设计的思想。

MVC中的M、V、C分别是什么?

 Model ---  用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。“ Model ”有对数据直接访问的权力,例如对数据库的访问。“Model”不依赖“View”和“Controller”,也就是说, Model 不关心它会被如何显示或是如何被操作。 这样的好处在于模型被写了一次,就可以被多个视图重用。

View --- 视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Macromedia Flash和象XHTML,XML/XSL,WML等一些标识语言和Web services.。

Controller --- 控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后用确定用哪个视图来显示模型处理返回的数据。

上面是比较具体的介绍,更为简洁的说法如下:

  • 控制器(Controller)- 负责转发请求,对请求进行处理。
  • 视图(View) - 界面设计人员进行图形界面设计。
  • 模型(Model) - 程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据库设计(可以实现具体的功能)。

在使用node+MongoDB搭建博客时,或者说用 express-generate 产生的一个项目时,其中的 views 就是这里的视图,表现为我们写好的模板引擎; 其中的routes就是这里的Controller, 负责处理用户的请求; 其中的medles就是这里的 Model ,负责对数据(库)的处理。 这就是MVC设计模式。

 

为什么要使用MVC?

  首先,最重要的在于MVC的分离使得多个视图使用一个Model成为可能。即不论用什么样的形式显示,我们都可以只使用一个model,使得代码重用率很高。

  其次,MVC的分离使得代码之间的耦合度降低,操作更加高效。比如我们希望数据库从MongoDB迁移到MySQL时, 也只需要处理model层的代码,而不会影响到view层和controller层。

  最后,这会使你的项目更加的有条理,更容易维护。

 

 

一个最简单的MVC实例

/** 模拟 Model, View, Controller */
var M = {}, V = {}, C = {};

/** Model 负责存放资料 */
M.data = "hello world";

/** View 负责将资料输出到荧幕上 */
V.render = (M) => { alert(M.data); }

/** Controller 作为M和V的桥梁 */
C.handleOnload = () => { V.render(M); }

/** 在网页读取的时候呼叫 Controller */
window.onload = C.handleOnload;

 

 

参考: 维基百科

 

posted @ 2017-04-25 11:26  Wayne-Zhu  阅读(319)  评论(0编辑  收藏  举报

一分耕耘,一分收获。