2013-04-04 18 views
1

假設您有一組骨幹視圖組合在頁面上以創建一個將出現在多個頁面上的非常複雜的小部件。 (這可能是一個例子,其中每個輸入都是它自己的視圖,並且可能具有自己的複雜行爲。)但是,由於a/b測試,每個頁面上的小部件可能不完全相同,因此某些內部觀點可能會有所不同......但跨越多數頁面他們都將是相同的。如何組織跨頁面共同的視圖組?

我們正計劃爲每個頁面設置一個主幹控制器。我們希望減少複製/粘貼,這些複製/粘貼是通過複製每個頁面上小部件所需的所有視圖的實例化來實現的,但我們也希望能夠靈活地將特定頁面上的單個視圖替換爲a/b測試。

到目前爲止,其中一個建議是創建實例化所有子視圖(表單元素)的「元」視圖(表示整個表單),並且您可以使用其他子視圖構建元視圖if你需要。然而,這引入了一個奇怪的視圖層次結構,也可能在元視圖內的視圖之間存在一些耦合。

人們通常會如何解決這個問題?

回答

0

我很想聽聽你爲什麼認爲你的提案會導致一個奇怪的視圖層次結構。對我而言,其各種子視圖的元視圖composed的想法似乎非常有意義。

至於視圖的耦合,您可以通過確保通過由共享模型和集合的更改導致的事件或通過event aggregator觸發的事件來處理通信來緩解此問題。

我肯定會看看Marionette這是(直接從文檔)一個用於Backbone.js的複合應用程序庫,旨在簡化大規模JavaScript應用程序的構建。它包括一個事件聚合器以及用於創建複雜視圖的一些漂亮的構造。

你可能會發現layout and region functionality有趣,因爲我想你可以用它來定義每個頁面控制器的元視圖的確切配置。

+0

我不太瞭解Marionette如何工作,但我認爲這可能是我尋找的答案。感謝指針! – Denise 2013-04-05 18:17:39

+0

@Denise木偶爲你工作?同時尋找Backbone.js的A/B測試解決方案 – ronnyfm 2015-07-20 22:38:24