如何组织跨页面共同的视图组?

时间:2013-04-04 16:52:36

标签: backbone.js backbone-views backbone-routing

假设您有一组骨干视图组合在页面上,以创建一个非常复杂的小部件,它将出现在多个页面上。 (这个例子可能是一个表单,其中每个输入都是它自己的视图,并且可能有自己的复杂行为。)但是,由于a / b测试,小部件在每个页面上可能不完全相同,一些内部视图可能会有所不同......但在大多数页面中,它们都是相同的。

我们计划为每个页面配备一个骨干控制器。我们希望减少复制/粘贴,这些复制/粘贴可能来自复制每个页面上窗口小部件所需的所有视图的实例化,但我们还希望能够灵活地在特定页面上交换单个视图a / b测试。

到目前为止,其中一个建议是创建实例化所有子视图(表单元素)的“元”视图(代表整个表单),如果你构建了具有替代子视图的元视图需要。但是,这会引入一个奇怪的视图层次结构,也可能会在元视图中的视图之间产生一些耦合。

人们通常如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我很想知道为什么您认为您的提案会导致奇怪的视图层次结构。对我而言,其各种子视图的元视图composed的想法似乎很有意义。

对于视图的耦合,您可以通过确保通过共享模型和集合的更改或通过event aggregator触发的事件导致的事件来处理通信来缓解这种情况。

我肯定会看看Marionette(直接来自文档)Backbone.js的复合应用程序库,旨在简化大型JavaScript应用程序的构建。它包括一个事件聚合器以及一些用于创建复杂视图的漂亮构造。

您可能会发现layout and region functionality很有趣,因为我想您可以使用它来定义每个页面控制器的元视图的确切配置。