2012-03-21 95 views
2

我有一個帶有require.js,backbone.js和jquery的web應用程序。
該應用的簡要結構如下:更改我的backbone.js路由器

  • 有屏幕(工具欄和下面主要內容)2個部分。

  • 有多個組件(地址管理,事件管理),每個組件都由一個哈希碎片更改觸發,並且需要一個 頁面轉換。

  • 有一個backbone.js路由器。這是應用程序的核心。路由器被激活一個新的哈希片段(手動輸入, 後退按鈕,菜單項選擇)。

直到現在,在路由器中,我做了頁面轉換,我直接調用了所選組件的控制器(「骨幹視圖」)。

所以有一個CENTRAL處理控制器調用。

但是現在必須改變爲DISTRIBUTED處理。我現在需要響應來自兩個不同位置的新哈希碎片:從工具欄組件和路由器。
所以我的想法是與pub sub交換直接控制器調用機制。現在MULTIPLE組件可以註冊一個特殊的動作,而路由器只是「觸發事件」。

我搜索周圍,發現Chaplin(https://github.com/moviepilot/chaplin),backbone.js示例應用程序。

卓別林的開發商似乎有一個名爲「ApplicationView」(https://github.com/moviepilot/chaplin#toc-router-and-route)一個類似的事情:「路由器和控制器之間,還有的ApplicationView作爲 調度程序」

有沒有人已經擁有過這樣的架構,並且可以告訴我他在這方面的經驗,或者有人以其他方式解決了這個問題?

回答

2

我在this project中使用了一個類似的,雖然也許不那麼複雜的架構。我在this answer to a related question給了一個很好的解釋。簡短的概述:

  • 我管理該改變使用單State模型的工作方式類似於卓別林的發佈/訂閱架構的應用程序狀態應用範圍的事件。這只是一個基本的Backbone模型,有一些添加的方法用於處理字符串的序列化和反序列化屬性,所以它們可以在URL中設置。

  • 通過在app.state上設置屬性來更改應用程序狀態以響應用戶交互或其他輸入的應用程序組件。需要在應用程序狀態的變化通過app.state結合change事件,這樣做更新

  • 組件(它看起來這是完全相同的方式卓別林的mediator作品,雖然他們改名以適應發佈/訂閱模式的方法) 。

  • 我把我的路由器看作是更新地址欄並響應用戶輸入的專門視圖。更改地址(手動或通過單擊鏈接)導致路由器在app.state模型上進行必要的更改,其他所有更新都會相應更新。

我希望這很有幫助 - 我認爲它比卓別林方法簡單一些。