Model(模型)——View(视图)——Controller(控制器)
1、视图和控制器都依赖于模型;
2、模型相对独立,可以自己的调试和使用
3、在胖客户端程序中,视图和控制器的分离是次要的。
4、在Web程序中可以将视图理解为浏览器,服务器端组件为控制器,模型即为业务逻辑模块
MVC的处理过程:
首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。
Angular.js 的wed MVC框架:
目前的前端MVC 框架有很多,如Angular.js,Backbone.js,Javascript MVC,Knockout.js等。虽然都是基于MVC,但是每个框架都有自己处理问题的方法,下面简要分析Angular.js的特点以及适用范围: AngularJS是Google推出的开源的JavaScript MV*(MVW、MVVM、MVC)框架,目前由Google维护。AngularJS弥补了HTML在构建应用方面的不足,其通过使用标识符(directives)结构,来扩展Web应用中的HTML词汇,使开发者可以使用HTML来声明动态内容,从而使得Web开发和测试工作变得更加容易。
使用AngularJS,Model直接与UI视图绑定,Model与UI视图的关系,通过directive封装,AngularJS内置的通用directive,就能实现大部分操作了,也就是说,基本不必关心Model与UI视图的关系,直接操作Model就行了,UI视图自动更新。而Model数据验证、与服务器端的数据交互都是非常简单而自由的。
AngularJS的directive,你输入特定数据,他就能输出相应UI视图,这样的directive可以变成了一个html通用组件,比如文章编辑器组件、分页导航组件、madal组件等,在不同应用中可以直接拿来用,减少重复开发。
用angular.js,写UI视图就是写正常的HTML/CSS,写逻辑控制代码就是用JavaScript操控数据(不是DOM),不同的就是增加了directive,实现DOM与数据的互动,如上所述,directive是通用组件。AngularJS只是定义了一个环境和一个数据与视图交互的机制,并提供了若干通用组件和服务,所以AngularJS开发很简单,很高效,很“原生态”。
首先Apache监听80端口收到一个连接请求后,找PHP处理这个请求。PHP再来根据这个请求做具体的处理(连数据库、读写文件、组织输出等等),最后把输出给到Apache,Apache再给浏览器。 这种构架下面,每次请求的处理都是相互独立的。想要跨请求之间共享数据,只能用cookie, session 等传递一些字符串数据。但是到了Node,一切都变了。一个js程序跑起来后,就起了一个上下文环境。处理请求只是这个js上下文里面的某个函数。多次请求就会多次调用这个处理函数。相当于一个Node程序能干的事情包含了 Apache和PHP 能做的事情。
在NodeJS下面,可以像LAMP构架下面对每次请求单独处理。也可以随便弄个全局变量,就可以跨请求传递任何类型的数据或者函数了。因为处理单次连接请求的只是程序里面的某个函数。这个函数就是一个普通的JS函数,有的上下文闭包等。
所以,在Node构架下面,一般是先连接数据库,然后把这个连接的对象放到全局。这样,每次独立的请求都可以用这个连接对象。 并不需要每次请求重新连接数据库。