如何使用Node.js实现简易MVC框架

JavaScript017

如何使用Node.js实现简易MVC框架,第1张

MVC模式学习之MVC解释:

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开发很简单,很高效,很“原生态”。

1、框架的成熟度:

Backbone相对成熟稳定,AngularJS有时会出bug,而且AngularJS的下一个版本不兼容以前的版本;(但Angular的思想是比Backbone要先进的——个人认为)

2、使用灵活度:

Backbone超级灵活,AngularJS则只能使用单一的解决方案;但Backbone过于灵活,所有需要自己写的东西就会很多。

3、框架本身大小:

Backbone本身要比AngularJS小很多尤其是压缩以后,但Backbone依赖于其他框架,所以在这方面,两者就相差不多了。

4、使用框架所带来的代码量:

但Backbone过于灵活,所有需要自己写的东西就会很多。导致开发简单功能时会多出N多代码,当然项目越大越复杂使用Backbone就越理想。

5、学习成本:

Backbone入门成本比较高,但越往后越轻松,AngularJS入门成本比较低,但越往后越难理解,你需要放弃传统的开发思想,深刻理解AngularJS思想才行。

6、与其他框架的兼容:

Backbone是可以兼容jQuery的,并且有众多的第三方扩展插件,你几乎可以在网上找到所有你想要的解决方案,但这也意味着你得额外学习第三方的插件。AngularJS只能用Angular的解决方案,就是所谓的Angular only。

注:其实框架没有谁比谁好,只能看哪个更合适,或者哪个是你目前项目正在用的。作为合格的前端,最好是这两个都会。