4

我有一个基于 Backbone 的应用程序。由于它变得越来越复杂,我正在评估向 Marionette 的迁移,但我不确定如何构建我的观点。

现有应用程序视图的结构如下:

BaseView = Backbone.View.extend({ ... }) 

BaseView 是所有视图的根。它基本上有一个带有基本内容的渲染功能,例如:模板渲染、页面本地化、活动菜单选择等

ListView = BaseView.extend({ ... }) 

这里的render方法包​​含所有列表的通用代码,例如加载和使用 DataTables 插件、edititem、additem、deleteitem 的通用事件等

FormView = BaseView.extend({ ... }) 

它使用 Backbone.ModelBinder 插件管理通用表单并处理表单验证。

我所有的应用程序视图都从上述之一扩展,以提高代码的可重用性。例如,我有一个从 FormView 扩展的 AccountFormView,其中我只有特定的逻辑(几行代码)来处理帐户信息。所有的共同逻辑都继承自父母的观点。

如何使用 Marionette Views 获得类似的东西?

谢谢,法布里齐奥

4

1 回答 1

4

Marionette 的视图旨在处理最常见的情况,并从解决这些常见问题中删除所有样板代码:

  • 视图:可用于构建其他视图的基础视图
  • ItemView:使用模板渲染单个模型
  • CollectionView:使用指定的渲染集合中的每个模型itemView
  • CompositeView:将模板渲染为集合视图的包装器。支持的嵌套/层次结构

在您的情况下,听起来您将使用这些视图类型的组合,具体取决于您所处的特定场景。但是,您不会总是从单一视图类型扩展,而是选择一个对当前场景最有意义并从中扩展。

如果您正在寻找一种将您自己的自定义功能添加到所有视图的方法,这也很容易 - 只需将该功能添加到基本 Marionette.View 或 Backbone.View ,它就可以用于所有 Marionette 视图。

一定要检查文档和代码(它被分成许多小文件,所以很容易阅读和理解),看看 Marionite 为您提供了哪些方法,以及它还提供了哪些扩展点。

希望有帮助。

于 2012-10-26T03:09:22.567 回答