我一直在寻找框架来帮助我编写更好的结构化JS代码,并且发现了Backbone。它似乎有很多功能用于创建具有公共和私有属性和成员的类,继承等。使用AngularJS和BackboneJS
Angular JS似乎做了一些完全不同的东西,比如自动将标记绑定到模型以及大量聪明的技巧模板,过滤,排序等。
我的问题不是我应该选择哪一个,但是同时使用它们是明智的吗? AngularJS看起来非常酷,但除非我错过了一些东西,它似乎并没有提供任何面向对象的东西供您使用。这有意义吗?
我一直在寻找框架来帮助我编写更好的结构化JS代码,并且发现了Backbone。它似乎有很多功能用于创建具有公共和私有属性和成员的类,继承等。使用AngularJS和BackboneJS
Angular JS似乎做了一些完全不同的东西,比如自动将标记绑定到模型以及大量聪明的技巧模板,过滤,排序等。
我的问题不是我应该选择哪一个,但是同时使用它们是明智的吗? AngularJS看起来非常酷,但除非我错过了一些东西,它似乎并没有提供任何面向对象的东西供您使用。这有意义吗?
我不确定将Angular与另一个框架进行配对是否真的会有很大的意义,它是相当完整的。
另一方面,骨干更具可组合性,例如您可以看看Knockback项目,这使得Backbone和KnockoutJS可以很好地协同工作。 Knockout采用的MVVM方法与您在Angular中找到的相近。
骨干似乎让你做这样的事情......“var PrivateNote = Note.extend({initialize:function(){...}});” ,这正是我想到的。在Angular中看不到任何类似的东西。 – jonhobbs 2012-08-06 10:15:25
嗨jonhobbs,只记得..这是Javascript。你不必写OO,它是原型语言:-) – 2012-08-06 11:48:26
这是真的,面向对象不一定是需求,但我即将开始创建一个有很多JS的大型管理系统,我希望它成为尽可能有组织。 – jonhobbs 2012-08-06 13:08:52
AngularJS故意不强加任何特定的继承风格,所以你可以自由地做任何你想做的事情。如果您喜欢Backbone.js的继承模型,您可以使用underscore(包含在Backbone.js中)来提供.extend
帮助程序。
Backbone.extend与_.extend不同。 _。扩展只是增加了对象的属性,而Backbone.extend则生成了子类。请参阅http://backbonejs.org/docs/backbone.html#section-189中的帮助程序部分 – 2013-04-28 17:55:58
如果您需要为您的数据(也称为Models)编写OO,只需使用像Base.js这样的库。它给你很好的面向对象的语法,继承,如extend
。好处在于它保持了类似myObject.var
的getter语法,所以它可以很好地与Angular搭配使用,与Backbone相反,您需要使用getter myObject.get('var')
,因此数据绑定工作得很好。
要理解这些语法和哲学之间的差异和原因,请阅读one of the Angular author's answer here in SO。
我发现自己处于同样的困境,我认为这是一个非常令人敬佩的问题。角提供者对_binding_的东西有很多魔力,但是我错过了一些Backbone提供的_inheritance_和_collections abstraction_。 – fguillen 2014-03-28 10:33:37