设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

AngularJS-下一个大框架

2014-9-9 09:58| 发布者: joejoe0332| 查看: 7474| 评论: 0|原作者: petert, gones945, lwei, 小檀, 徐继开, 0x0bject, zhaoxj, __eric__, 无若, AndyLam, 郭振华oo|来自: 开源中国社区

摘要: AngularJS是web应用的下一个巨头。AngularJS是一个开源的web应用框架,由Google和社区进行维护,它可以创建单页的应用程序,一个页面的应用仅仅需要HTML,CSS和JavaScript在客户端。它的目标是增强页面的模型-视图-控 ...


对比Angularjs和类似Dojo的企业级工具集(Toolkit)

Dojo Toolkit:

Dojo Toolkit是一个致力于简化跨平台JavaScript/Ajax应用和网站的开源模块化JavaScript类库. Dojo是一个面向大规模客户端web开发的JavaScript框架. 例如, Dojo抽取出一个屏蔽各种浏览器差异的API集合. 此外, Dojo的功能还包含: 定义了模块化代码的框架, 并管理他们的相互依赖关系;  提供构建工具集, 可以用来优化JavaScript和CSS代码, 生成文档并且运行单测; 支持国际化, 本地化和无障碍(accessibility); 提供了丰富了通用工具类和用户界面组件(Widget).

  • 社区支持

       

AngularJS      

DOJO      

关注/收藏数      

25760      

300      

Fork次数      

9136      

216      

贡献者      

877      

59      

发布次数     

92      

147  

  • MVC

Angular开发团队已经将MVC设计模式以多种方式引入到Angular中, 因此会使得开发也必须跟随这MVC设计模式. AngularJS并没有以传统的方式实现MVC, 而是更接近于MVVM(Model-View-ViewModel), 因此有时被统称为MV*. MVC是Angular的核心, Angular为MVC设计模式提供了原生的支持, 可以轻易将其应用于web应用程序的开发中.

Dojo的Toolkit为JS应用程序提供了实现MVC的独立工具包. Dojo并没有为JS应用程序提供完备的MVC实现, 而是根据应用程序自身需要, 选择性使用其中的MVC工具/组件. Dojo提供MVC功能的包是dojox/mvc.这个dojox/mvc包主要关注客户端的View到Model的数据绑定, 仅提供了在一个View中的数据绑定/控制器的支持, 并未提供在应用程序级别的跨多个View的支持(例如, 导航(Navigation)的支持). 

在Dojo中,MVC应用中的级别关注点比如路由或者导航等必须使用另一个包(dojox/app)来处理,而在AngularJS框架中,这些关注点都是框架自身就能处理的。
dojox/mvc模块的状态现在仍然是“Experimental” ,所以它仍然是不稳定的,正如下面这篇文章所说的(http://dojotoolkit.org/reference-guide/1.10/dojox/index.html#dojox-index),而Angular则是一个经过了更多的验证、稳定而成熟的JS MVC框架。

  • SPA

AngularJS是一个流行的全功能的SPA框架。AngularJS的一些固有特性支持了单页面应用的开发。Angular通过下列特性来支持SPA:

  • 内嵌视图(Nested Views)

  • 控制器(Controller)继承

  • 路由(Routing)

Dojo通过其Dojox/app包实现其构建单页应用的目标。这个包是个小型的应用框架,提供了一组类,用于管理部署在移动设备或桌面系统上的单页面应用的生命周期和行为。该应用框架被设计成只需简单配置一个配置文件,由潜在的嵌套视图组成应用,并便于这些视图之间的过渡。

使用Angular开发单页面应用,可以很好的集成整个框架,同时框架提供了MVC功能,例如路由,控制器,视图和单页面应用模式是紧密结合的。Dojo中的Dojox/app则是一个独立的组件,并未将单页面应用与MVC紧密结合,因此,Dojox/mvc在使用的时候必须通过配置Dojox/app来管理解决,而这在Angular中是自带的,而且容易使用的。

  • UI 挂件和库

Dojo提供了底层系统所支持的大量的widget(用户接口组件).Dojo的UI库称为Dijit,使用一个单独的命名空间"dijit".

Angular确实提供了一个UI widget工具集,但是没有Dojo所提供的广泛.Angular允许随意使用流行的第三方UI库.它提供了名为"Angular-UI"的UI库,这个库包含各种流行的第三方库的widget和模块.其中,UI-Bootstrap模块将Bootstrcp框架的所有widget作为Angular指令.

由于Dojo是一个工具集,所以它的任意一个工具都可以不依赖于Dojo生态系统而单独使用.因此,Dojo的Dijit和其他流行的UI和widget库,如JqueryUI和其他jquery或js插件,都可以将它们包装成指令后,在Angular应用程序中使用.

  • RESTful Interation

AngularJS使用angular-resource(ngResource)模块来提供RESTful交互功能,该模块表示一个REST资源并提供帮助方法(GET/POST/PUT/DELETE)来轻松的实现RESTful交互。另外也提供其它的可选模块。

Dojo使用dojo/store/JsonRest来提供RESTful交互能力。它是一个轻量级的对象存储实现,给那些具有RESTful数据交互能力的HTTP客户端来使用。

AngularJS和Dojo都提供了大体相当的RESTful交互能力。

  • 可维护性

AngularJS提供了一些特性,让拥有大量代码基数的应用程序变得可维护.这些特性如下:

  • AngularJS 鼓励和增强最小化DOM操作,推荐只在HTML中使用的指令中展现DOM操作.这样可以避免由于大量使用DOM和DOM事件等产生的"意大利面"式的代码.这些代码在大的web应用程序中难于调试和跟踪.Angular指令也为增加了HTML语义.

  • Angular提供了一些类似模块的特性,它允许应用程序开发者,将不同部分的应用程序逻辑打包成模块,以增加应用程序的模块化和可维护性.

  • Angular提供了DI (依赖注入) 设计模式的固有特性,它帮助应用程序保持模块化和易读性.

  • 项目结构框架对于AngularJS已经可用,可以用来开发可维护的企业web应用程序.

Dojo没有提供最小化DOM操作的技术,这样,对于大型web应用程序,DOM操作增加了趋向于“意大利面”式代码的可能性,也影响了应用程序的可维护性. Dojo支持模块(AMD),但是没有为web应用程序提供DI模式.

  • 数据绑定和视图模板化

商业web应用程序的数据中心原则要求来自模型的数据和UI同步更新.对于一个商业web应用程序,动态视图必须依赖于模型数据而创建.Angular提供了相当简单和已有的技术,声明式的编写绑定到模块数据的动态视图.在Angular里面,视图模板化使用包含Augular专有的元素和属性的HTML编写.使用HTML作为模板化语言,对于开发者而言,更易于创建和理解视图.Angular结合了来自模型和控制器的信息模板,用来渲染用户在浏览器中看到的动态视图.Angular使用了双向绑定特性以保持UI和模型的同步.

同样的特性也可以在Dojo中使用,但是,它们和Dojo工具集的流程不太协调,也缺少了这个特性的简单和细微化.

  • 声明式的用户接口

AngularJS 提升了HTML视图的 声明式设计(declarative design)。在视图层,使用HTML作为模板语言让它变得相当容易开发创建视图,同时也变得易于理解,在视图语义上也有利于其他开发者。Angular提供一个特性,被称为“directives”,它可以根据领域的需要,来提高HTML的定制性。 

声明式设计(declarative design)可以在Dojo应用中通过使用data-*属性运行,但是它跟Angular的“directives”特性不一样。

  • 支持 AngularJS 能更好的进行 IDE 和浏览器调试


Netbeans IDE也为AngularJS提供了内嵌的支持,它让使用AngularJS可以简单的开发web应用程序.(http://wiki.netbeans.org/NetBeans_80_NewAndNoteworthy#JavaScript)

Angular团队也为Google Chrome浏览器创建了一个名为Batarang的插件,它提高了使用Angular开发应用程序的调试体验.这个插件旨在简化性能瓶颈的检测,以及提供GUI来调试应用程序.

  • 使用Dojo的时候很难在大型团队中保持代码的统一

Dojo中的编程模型是使用widget,当拓展它们的时候,它们将你的代码包围住.你仍然在编程来操作DOM,连接/注册/取消注册事件.Dojox/mvc并没有生成模块化的代码.在Dojo中有多余2种或3种的方式做同样的事情.其中一些甚至是糟糕的实践,但是并没有被清除.很难在大型团队中加强代码的统一,因为Dojo没有为模块化和统一化的web应用程序提供整体的框架.

AngularJS提供了一个全面的框架,包含MVC的核心及规划模型,具有均匀性,可理解性和模块化。AngularJS只为模型提供嵌套的控制器。良好的测试应用程序隔离的部分。定义良好的相关性。大部分时间你不写代码操纵DOM自身。但你可以在创建指令(组件)时这样做。没有命名空间混乱。你的对象从来不会出现在全局命名空间中,好像一切都封装在Angular的应用中。MVC模式是核心。你的应用程序是一套控制器,服务,过滤器和自定义指令。

总结

本文意图让我们知晓web应用的未来就在眼前。并尝试概述一个正确的有指导意义的方法来结构化和设计一个web应用,使之能适应web世界。本文概述了客户端JS MV*框架的使用,并说明了为什么用客户端MVC框架组织的web应用很适合实现web应用。

本文集中分析和总结了在成熟的客户端MVC框架下的对比,并提供一些对比的统计信息,帮助你和你的团队决策,选择出适合你的web应用的客户端MVC框架。

本文偏向于AngularJS框架,你可以有不同的偏好。对我来说AngularJS是我个人的喜好所在,在我眼中是其他客户端MVC框架所不能匹敌的。


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部