2014-01-17 30 views
0

我正在開發一個相當大的SPA,並決定爲此使用Backbone。我的應用程序做得很好,包括路由器,頁面部分,模板,登錄系統和CRUD區域。有兩個不同的區域,一些用戶可以訪問兩個或只有一個。所有東西都在RequireJS的幫助下模塊化。但是我必須自己寫很多東西,並開始考慮是否有更好的方法來實現它。木偶 - 幫助瞭解組件的工作原理

我對Marionette有很多瞭解,並且我非常喜歡它如何處理一些問題和任務,如殭屍視圖和將區域附加到佈局中......只是提到了一些。但很難找出組件的工作方式或應該做的事情。有一些方向,這將是不錯的。

我做了一個思維導圖,所以這會是更容易(一些)瞭解我的問題:

enter image description here

事情我瞭解(請糾正我,如果我想的東西):

  • 一種ItemView控件是一個元素的一小部分,如一個標題的導航或報頭的搜索表單
  • 佈局是ItemViews的集合:整個「頭」。
  • 一個區域附加到應用程序本身,並需要一個佈局實例到一個區域的參數;但它可以直接與它相關的ItemView。
  • AppRouter附加到應用程序。

,事情我不understant相當不錯:

  • 凡在此結構中位於複合視圖?
  • 我能用控制器做什麼?它究竟應該做什麼?它與應用程序直接相關嗎?我可以將AppRouter連接到它嗎?

任何幫助都會很棒。謝謝。

+0

你能澄清一下你的意思嗎?「我能給控制器什麼」? –

+0

@ net.uk.sweet Sry,我的意思是:「我能用控制器做什麼?它到底做了什麼?」。我更新了這個問題。 – darksoulsong

回答

1

一種ItemView控件是一個元素的一小部分,如一個標題的導航或報頭的搜索表單

我認爲在documentation的描述較好,但基本上ItemView是在木偶的基本視圖類型。

ItemView是表示單個項目的視圖。該項目可能是 一個Backbone.Model或可能是一個Backbone.Collection。不管它是 ,但它將被視爲單個項目。

佈局是一個ItemViews的集合:整個「標題」。

A LayoutItemViewRegions的集合的組合。您可以使用它將各種類型的視圖組織成ItemView,CollectionView,CompositeView,另一個Layout,組成特定佈局。(再次參見documentation)。

在這個結構中位於複合視圖的位置?

CompositeView在您的圖表中可以互換ItemView,另請參閱CollectionView。簡而言之,ItemView通常是模型的視覺表示,CollectionView代表ItemViews的集合,並且CompositeView是兩者的組合。

如何使用控制器?它究竟應該做什麼?它與應用程序直接相關嗎?我可以將AppRouter連接到它嗎?

再次,參照documentation

這是一個非常通用的,多用途的對象,可用於多種 不同的角色,在許多不同的場景。

哪一個,我承認,並不真正幫助你;)。然而,基本用法是作爲您的AppRouter的代表來實現在路由更改時發生的具體邏輯。

+0

不錯,thx爲解釋,它幫助了很多。我對控制器特別感興趣,因爲我有一種情況,即在用戶登錄後,他有兩個不同的站點區域,他可以完成不同的事情。只要我使用AMD,資源管理是必須的 - 我不希望requirejs將這兩個區域的文件包含到html頭部。如果我有控制器,我可以檢查用戶權限並重定向到允許他進入的區域。但我不知道控制器是否被做成這樣的東西。 – darksoulsong

+1

我認爲你所描述的是控制器的完美用例。路由器會根據您的權限邏輯將該路由的處理委託給控制器上的一個方法,該方法可以提供不同的視圖,或者可能重定向到另一個路由。 –