2012-01-24 39 views
15

我有興趣在我們的應用程序(它建立在CakePHP框架上)中爲一些更重複的頁內CRUD結構實現Backbone.js。我一直試圖在Backbone上弄明白它如何與Cake一起工作,而且在分離雙方的職責時我有點遺憾。Backbone.js和CakePHP

我想讓吉米東西到我的網站,不需要在那裏嗎?這種堆棧結構有優先嗎?我在這一點上的耳朵。

+0

評論,因爲我沒有一個徹底的答案。我覺得骨幹對於(rest-)api來說效果最好,所以您應該使用CakePHP的角度來處理所有使用JSON請求和響應的操作。 – Evert

+0

那麼,開發應用程序的api/platform側更徹底,然後作爲接入點? – dclowd9901

+1

我認爲你可以通過提交標準表單提交行爲更像一個普通的cakephp表單,但使用API​​可能更合適,並且可以更好地使用Backbone。我想這也取決於你想用骨幹實現什麼目標。你可以將它用於很多東西,但也只是表單驗證,我想。 – Evert

回答

28

我實際上正在通過相同的情況現在(雖然與Python/Flask,但是相同的概念應該適用於任何服務器端語言)下面是我的應用程序中頁面的工作流程是如何進行的,只是注意我不遵循單頁面應用程序格式;在我的應用程序中,每個主頁面是全部重新加載的。

  1. 用戶請求一個頁面,說公司的名單,/企業/上市/
  2. 服務器做路由,從DB加載正確的控制器
  3. 控制器首先加載X公司
  4. 公司被編碼爲JSON
  5. 加載其他元數據(例如公司總數)並轉換爲JSON
  6. 加載列表頁面模板並將JSON彈出到模板中的<腳本>腳本中。請注意,我在不要填寫上市表或任何沿着這些行,我讓Backbone做所有這些。我在這裏填寫JSON,以便客戶不必爲第一組公司提出第二次請求
  7. 列表頁面發送給客戶端。服務器現在完成
  8. 客戶端擁有所有需要啓動的數據,因此我將JSON傳遞給我的Backbone.View以獲取列表頁面
  9. 該視圖爲模型創建一個集合並管理代表列表中的條目的一組子視圖
  10. 任何其他處理/視圖創建都會發生,例如創建頁面,上一個/下一個按鈕等。
  11. 如果用戶點擊下一頁公司,我向服務器(/ companies/listing/page/1或其他)發送一個AJAX查詢,它返回一個新的JSON字符串和一組新的模型
  12. 將新的模型集發送到我的Backb one.View哪刷新一切

所以,真的,服務器只用於實際的數據加載和模板的初始發送。我喜歡這個,因爲它可以讓我輕鬆地連接新的前端(比如iPad應用或其他)。

對於一個形式,真正的粗線條,我做這樣的事情:

  1. 用戶請求的形式,/企業/編輯/ 1
  2. Server會的權限檢查,加載項,將模板/ JSON給客戶。服務器
  3. 客戶端使用JSON數據,以填寫表格
  4. 客戶端修改表格填寫表格,點擊提交
  5. 他們所有的更改應用到模型,該模型變成JSON和發送到使用AJAX
  6. 服務器做驗證,要麼發送錯誤消息(以JSON)客戶端或更新數據庫,併發送成功消息

所以,再一次,這些都是對真正廣招服務器我是如何做到的。一般來說,我使用服務器從數據庫中獲取數據,做服務器端驗證(不能相信客戶端heh),並更新數據庫。

如果您有一些具體問題,我很樂意嘗試分享我迄今爲止學到的知識。

+0

+1全面回答 – vikmalhotra

+0

我懷疑我是將JSON頁面加載到Backbone中,並且您所說的證實了這一點。我很高興知道我至少在正確的軌道上。非常感謝這個答案。非常全面,並給我一個很好的過程,以啓動。 – dclowd9901

+0

完全沒問題。很高興這很有幫助。 –