【2012.10.13 上周工作总结】

上周学习了新的javascript框架Ember,接下来将这个框架与backbone做一些简单比较,同时做一些总结

一.个人感觉Ember相对于Backbone具有更高的灵活性:

  1.Backbone只支持对Model和View的拓展,并且个人感觉Collection这个类的设定很鸡肋

  2.Ember不仅支持对Model的拓展,还另支持对Control等其他类的拓展,即使在定义之后也可以通过方法对类进行修改。

创建实例的方式也不仅仅是通过对类的实例化,可以在没有类的情况下直接创建一个实例

二.Ember的灵活也有是有代价的,比如它的封闭性

  1.Ember提供了创建命名空间的接口

  2.Ember只能使用自己的JS引擎模板,而不是像backbone一样可以更换JS引擎模板。并且Ember的JS引擎模板的语法也比较奇怪

三.Ember也有一些弊端(个人认为)

  1.Ember对DOM操作事件绑定是以inline的方式,比如:

 <a href="#" title="view again" {{action "searchAgain" target="App.recentUsersController"}}>{{this}}</a>

  其中action代表需要调用的方法名,而target代表action方法所属的类,默认为click事件

  这样不是违背了MVC的初衷了,增加了可维护性的难度?

  而backbone的类则是在View中init中就已经定义的,没有这样的问题

四.其他

  1.backbone和ember都具有同步和监听的功能,技能视图绑定的model数据改变了,视图能自动更新,并且可以监听某个属性的值是否改变,并且为此改变添加回调函数。但是ember做的更为强大,能同步的不仅仅是数据,可以计算出一些attribute和class

目前只有想到这么多,有需要的话会随时补充

虽然以上总结是对ember缺陷描述较多,但是仍然还是认为ember比backbone更为强大,更灵活,具体情况还是视具体项目而定

另有一篇文章可以参考

http://net.tutsplus.com/tutorials/javascript-ajax/game-on-backbone-and-ember/

原文地址:https://www.cnblogs.com/hh54188/p/2723154.html