2012-08-06 53 views
3

我一直在尋找框架來幫助我編寫更好的結構化JS代碼,並且發現了Backbone。它似乎有很多功能用於創建具有公共和私有屬性和成員的類,繼承等。使用AngularJS和BackboneJS

Angular JS似乎做了一些完全不同的東西,比如自動將標記綁定到模型以及大量聰明的技巧模板,過濾,排序等。

我的問題不是我應該選擇哪一個,但是同時使用它們是明智的嗎? AngularJS看起來非常酷,但除非我錯過了一些東西,它似乎並沒有提供任何面向對象的東西供您使用。這有意義嗎?

+1

我發現自己處於同樣的困境,我認爲這是一個非常令人敬佩的問題。角提供者對_binding_的東西有很多魔力,但是我錯過了一些Backbone提供的_inheritance_和_collections abstraction_。 – fguillen 2014-03-28 10:33:37

回答

3

我不確定將Angular與另一個框架進行配對是否真的會有很大的意義,它是相當完整的。

另一方面,骨幹更具可組合性,例如您可以看看Knockback項目,這使得Backbone和KnockoutJS可以很好地協同工作。 Knockout採用的MVVM方法與您在Angular中找到的相近。

+1

骨幹似乎讓你做這樣的事情......「var PrivateNote = Note.extend({initialize:function(){...}});」 ,這正是我想到的。在Angular中看不到任何類似的東西。 – jonhobbs 2012-08-06 10:15:25

+0

嗨jonhobbs,只記得..這是Javascript。你不必寫OO,它是原型語言:-) – 2012-08-06 11:48:26

+0

這是真的,面向對象不一定是需求,但我即將開始創建一個有很多JS的大型管理系統,我希望它成爲儘可能有組織。 – jonhobbs 2012-08-06 13:08:52

1

AngularJS故意不強加任何特定的繼承風格,所以你可以自由地做任何你想做的事情。如果您喜歡Backbone.js的繼承模型,您可以使用underscore(包含在Backbone.js中)來提供.extend幫助程序。

+3

Backbone.extend與_.extend不同。 _。擴展只是增加了對象的屬性,而Backbone.extend則生成了子類。請參閱http://backbonejs.org/docs/backbone.html#section-189中的幫助程序部分 – 2013-04-28 17:55:58

2

如果您需要爲您的數據(也稱爲Models)編寫OO,只需使用像Base.js這樣的庫。它給你很好的面向對象的語法,繼承,如extend。好處在於它保持了類似myObject.var的getter語法,所以它可以很好地與Angular搭配使用,與Backbone相反,您需要使用getter myObject.get('var'),因此數據綁定工作得很好。

要理解這些語法和哲學之間的差異和原因,請閱讀one of the Angular author's answer here in SO