木偶控制器功能声明 - 最佳实践

时间:2013-08-13 11:25:09

标签: javascript backbone.js marionette

我正在编写一个大规模的木偶应用程序,它最初是从路由器/控制器运行的。

这是我的问题 - 在控制器中包含不适用于路线的其他功能是不错的做法?

所以说我有以下方法:

index : function() {
   alert('test!');
}

是否与最佳实践一致,能够在路由初始化时声明控制器中未调用的其他函数?像这样:

noRouteAssociated: function() {
     alert('test!');
}

index: function() {
     this.noRouteAssociated();
}

显然这是一个简化的例子,但我试图避免在方法中放入大量信息或函数声明,因为它们与路由器相关联。

1 个答案:

答案 0 :(得分:1)

控制器的角色和职责最好由@davidsulc在this SO post中说明,更好的是他的新book

一般来说,可以包含不适用于路线的方法,如果他们正在控制应用的工作流程。事件触发是一个很好的示例,但是如果要更改某些内容的外观或从数据库中检索数据,则应分别将这些方法移动到视图或模型中。以下块引用直接来自Marionette's controller documentation

  

名称控制器必然会引起一些混乱,这是相当不幸的。关于如何称呼这个对象有一些讨论和争论,人们会把它与MVC风格控制器混淆的想法出现了很多次。最后,我们决定将此称为控制器,因为典型用例是控制应用程序和/或模块的工作流程和过程。

     

但事实是,这是一个非常通用的多用途对象,可以在许多不同的场景中提供许多不同的角色。我们总是乐于接受建议,有充分的理由和讨论,将对象重命名为更具描述性,更少混淆等。如果您想建议其他名称,请在邮件列表或github问题列表中进行。