AngularJS的强项 双向数据绑定节省了大量公式化的代码,先看看下面的jQuery代码: 而如果使用Angular,我们可以省却这些代码,而只需在HTML模板进行绑定声明: Angular不仅拥有最大的在线社区支持,而且Google一直在推广它。很多创新的工具不断涌现,极大地提高了工作效率,例如:Protractor,Batarang,Zone.js等。此外,Angular还与社区进行广泛合作,不断进行改进。有关Angular 2.0的设计文档,可以点击这里进行了解,任何人都可以直接在上面发表意见。 Angular能够帮助我们有条不紊地把程序生成区块进行分类:控制器,指令,装配器,筛选器,服务和视图(模板)等。这些都是以模块化方式进行组织的,互相形成依赖。不同区块有不同的角色,视图负责UI,控制器负责UI身后的逻辑管理,指令负责组件复用以及HTML扩展等。 自动化的脏数据检查(Dirty Checking)机制能够使我们进行任意的对象属性修改,angular会自动识别出这些变更,然后通知所有与该属性有关的观察者。 Angular还提供了很多即用的功能强大的基本内建服务,例如$http和$timeout。 AngularJS的弱项 嵌入包含和原型继承的概念会让不少开发者感到迷惑,我们需要花一定时间才能领悟其中的含义。在视图层便可广泛使用的Angular表达式,不可谓不强大,甚至是过于强大了。开发者可以在视图模板中使用复杂的逻辑甚至是进行操作委派和计算,这不啻增加了测试的难度。例如下面的代码:
Backbone.js的强项 Backbone是一款轻量级的产品,容易上手,新概念不多,并且有丰富的文档资源与代码示例资源。基于Backbone的第三方框架有Aura,BackboneUI,Chaplin,Geppetto,Marionette等。 Backbone.js的弱项 Backbone暂时还没提供程序架构方面的支援,取而代之的是提供了一些基本的工具来让我们自己进行架构建设,例如内存管理等都是需要亲力亲为的。视图生命周期管理方面的欠缺,更使得程序容易在路径/状态发生变更时出现内存泄漏问题,除非我们能把所有应该清除干净的对象处理好。 很多没能从Backbone中获得的功能都是由第三插件来提供的。这样一来,我们有可能需要花时间进行一番测试摸索才能确定哪个插件才是适合自己的,从而增加了额外的开发用时。 Backbone没有提供双向数据绑定,我们必须自己手写代码来进行相关处理。Backbone中的视图是直接操作DOM的,这增加了单元测试的难度,对程序稳健性和复用性也有一定影响。 Ember.js的强项 Ember拥有不俗的配置管理能力,可以省却不少的人工代码。例如Ember.js会通过路由器的名字,判断出相应的路由和控制器的名字。Ember中有一个卓越的路由层、数据层,名字是ember data。它封装了一个完备的数据模块,与Ruby-On-Rails或其它RESTful JSON API很好地整合在一起。 性能指标是Ember.js的设计重点,例如事件处理循环和程序预编译等方面,Ember都做了不少努力。 Ember.js的弱项 Ember API 经历了一段时间才最终形成现在比较稳定的版本。因此,初初接触Ember的开发者可能会对一些老旧的文档和例子感动迷惑,具体可以看看它的更新日志,请点击这里。 Handlebars的使用,使得DOM中充满了<script>标记,有时很难分辨出哪些代码是自己的,对CSS样式和其它框架的整合也造成了一定影响。 写在最后 Angular在HTML扩展方面有很多独到的做法,有强大的支援资源。Backbone是小巧的,入门门槛相对较低的。基于MVC结构的Ember,对有面向对象编程基础的开发者来说非常亲切,自身也有强大的配置管理能力。三者各有特色各有长短,我们不妨好好对比学习,找到适合自己的那杯茶。 英文出自:Airpair.com |