骨幹的力量在於它具有令人難以置信的靈活性和模塊化結構。這意味着您可以使用,擴展,取出或修改Backbone的任何部分。這包括AJAX功能。
Backbone不會「關心」您在哪裏獲得您的藏品或模型的數據。它將通過提供開箱即用的「ajax」解決方案來幫助您,但如果您想使用其他方法,它不會發瘋!
這允許您查找(或寫入)任何想要處理服務器交互的插件。請看backplug.io,Google和Github。
專門爲插座有backbone.iobind。
找不到插件,無後顧之憂。我可以告訴你如何寫一個(它比聽起來容易100倍)。
您需要了解的第一件事是覆蓋行爲是非常容易的。有兩種主要方式:
全球:
Backbone.Collection.prototype.sync = function() {
//screw you Backbone!!! You're completely useless I am doing my own thing
}
每個實例
var MySpecialCollection = Backbone.Collection.extend({
sync: function() {
//I like what you're doing with the ajax thing... Clever clever ;)
// But for a few collections I wanna do it my way. That cool?
});
而你需要知道的唯一的另一件事是,當你調用「讀取」在收集會發生什麼。這是「經書」 /「開箱即用的行爲」的行爲:
collection#fetch
是由用戶觸發(YOU)。 fetch
會將ACTUAL抓取(ajax,套接字,本地存儲,甚至是立即返回json的函數)委託給其他某個函數(collection#sync
)。無論功能是在collection.sync
已經到了採取3個參數:
- 動作:
create
(用於創建),動作:read
(用於取入),delete
(刪除),或update
(用於更新)= CRUD。
- 方面(這個變量) - 如果你不知道這是什麼做的,不用擔心它,而不是重要的,現在
- 選項 - 阿凡達魔法。我們只關心1個選項,但
- 成功:數據「準備就緒」時調用的回調函數。這是
collection#fetch
感興趣的回調,因爲這是當它接管並做它的事情。唯一的要求是,sync
通過它第一個參數
response
如下:實際數據就回來
- 現在 必須在當它這樣做獲得的數據被執行它的選項返回成功回調。這功能就是它的責任是
- 每當
collection#sync
做是做的事,collection#fetch
收回了(與在成功通過了回調),並執行以下俏皮步驟:
- 呼叫
set
或reset
(爲了這些目的,它們大致相同)。
- 當
set
完成後,它會觸發收集廣播給世界的sync
事件「我準備好了!
- 那麼
set
會發生什麼情況。很多東西(刪除,解析,排序,解析,刪除,創建模型,傳播更改和一般維護)。不要擔心。它的工作原理;)你需要擔心的是你如何掛鉤到這個過程的不同部分。只有你應該擔心的兩個問題(如果你用奇怪的方式包裝數據)是
collection#parse
解析集合。應接受來自服務器/ ajax/websocket/function/worker/whoknow的原始JSON(或其他格式),並將其轉換爲對象陣列。採用第一個參數resp
(JSON),並且應該爲返回而吐出一個變異的響應。十分簡單。
model#parse
。與收集相同,但它需要原始對象(即,想象您遍歷collection#parse
的輸出)並分割出「展開」對象。
- 放下電腦,去海灘,因爲你在你認爲需要的時間的1/100時完成了你的工作。
這就是所有你需要知道的,以實現任何你想要的服務器系統來代替香草「阿賈克斯請求」。
要將Backbone與WebSockets集成,請嘗試https://github.com/ydaniv/backbone-ws – ydaniv