2013-04-04 44 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