我最近開始使用Backbone.js
。我喜歡的建築,在功能方面它幾乎正是我需要的...Backbone.js及其API混淆
...但是我發現下面的注意事項:
- 對於
Collection
小號get
意味着什麼比Model
期不同。沒有set
。屬性應該以常規方式訪問。我覺得它很不一致。有時候很容易混淆模型和集合。有什麼可以克服的呢? - 在
Model.extend
中分配初始值並不總是有效。例如分配url
將不是覆蓋默認行爲。這隻能通過調用set()
方法來實現。再次非常容易出錯。 - 我仍不知道是否需要使用
get
/set
裏面的initialize()
來電。 - 我不明白爲什麼我不能只是在
initialize()
裏面調用_.bindAll(this)
,我必須列出特定的函數名,像這樣綁定:_.bindAll(this, firstFunc, secondFunc, ...)
。這不是很乾。
我想知道:關於上述情況的最佳做法是什麼?你做什麼來使框架更加一致 - 任何猴子補丁?我做錯了什麼/違反了公約?
我會很感激任何好的現實世界的例子。我確實發現:http://documentcloud.github.com/backbone/docs/todos.html和http://liquidmedia.ca/blog/2011/01/backbone-js-part-1/,那些沒有解決任何上述問題。事實上,他們只是提出最簡單的想法,絕對沒有邊界情況,所以更復雜的事情可能會有用。
編輯:
好,並有一個更根本以爲我不明白:
- 上午我曾經允許放在擴展這樣的附加屬性:
var SomeModel = Backbone.Model.extend({ myattribute: myvalue })
?- 如果是這樣,那麼爲什麼以後不要撥打
new SomeModel().get("myattribute")
工作?
- 如果是這樣,那麼爲什麼以後不要撥打
- 究竟是
this
裏面initialize()
?它是模型類還是模型實例?
EDIT(2):
好吧,我發現這個:http://maccman.github.com/spine/。它看起來像Backbone.js 2.0,也有類似的名字:)。還沒有測試過,這可能是一個顯示停止位,因爲圖書館最近非常。然而從文檔方面看,它看起來非常有前景。它消除了我發現的大多數問題,它簡化了API,它甚至擺脫了對圖書館來說依賴於underscore.js
的好處。我會在這裏發表我的進一步發現。
好問題,我也發現Backbone有點奇怪。你應該添加你的發現作爲你自己問題的答案。 – brianpeiris 2011-04-27 21:48:30
@brianpeiris我會盡快確定它確實可用。到現在爲止還挺好。脊柱真的好像被深思熟慮。 – julkiewicz 2011-04-27 22:44:51