同作为JavaScript MVC框架,Backbone和AngularJS各有什么优缺点

JavaScript017

同作为JavaScript MVC框架,Backbone和AngularJS各有什么优缺点,第1张

Backbone

通过提供模型Models、集合Collection、视图Veiew赋予了Web应用程序分层结构。通过以下方式实现分层结构:

模型Model绑定键值数据和自定义事件;

集合Colection是模型的有序或无序集合,带有丰富的可枚举API;

视图View声明事件监听函数;

将模型、集合、视图与服务端的RESTful

JSON接口连接。

AngularJS

致力于mvc代码解耦,采用model,controller以及view方式去组织代码。

1.数据的双向绑定:这可能是其最激动人心的特性吧,view层的数据和model层的数据是双向绑定的,其中之一发生更改,另一方会随之变化,这不用你写任何代码!(想想jQuery方式下怎么做吧)

2.代码模块化,每个模块的代码独立拥有自己的作用域,model,controller等。

3.强大的directive可以将很多功能封装成HTML的tag,属性或者注释等,这大大美化了HTML的结构,增强了可阅读性;

4.依赖注入,将这种后端语言的设计模式赋予前端代码,这意味着前端的代码可以提高重用性和灵活性,未来的模式可能将大量操作放在客户端,服务端只提供数据来源和其他客户端无法完成的操作;

5.测试驱动开发,angularjs一开始就以此为目标,使用angular开发的应用可以很容易地进行单元测试和端对端测试,这解决了传统的js代码难以测试和维护的缺陷

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

MVC:模型层(model)、视图层(view)、控制层(controller)View:视图用来有目的显示数据,在视图中一般没有程序上的逻辑,为了实现视图上的最新功能,视图需要访问它监视的数据模型。Controller:控制器调控模型和视图的联系,它控制应用程序的流程,处理事件并作出响应,事件不仅仅包括用户的行为还有数据 模型上的改变。通过捕获用户事件,通知模型层作出相应的更新处理,同时将模型层的更新和改变通知给视图,使得视图作出相应改变。因此控制器保证了视图和模 型的一致性。代表的框架有:AngularJS、BackboneJS(目前使用较多的是其View层~)、Ember.js、Javascript MVC、Knockout.js 等Backbone. js 可以灵活地解决应用中层次分离问题,并且支持持久层和 REST 同步服务、models、views、事件驱动、模板和定位等。它允许 model 修改后 View 自动更新。而且很多大型公司都使用它来构建应用,并且有非常好的社区提供支持。(Backbone. js相关~)Angular JS 是由 Google 创建的一种 JS 框架,它可以扩展应用程序中的 HTML 词汇,从而在 Web 应用程序中使用 HTML 声明动态内容。支持快速测试、URL 管理和分离的 MVC。