我正在编写一个大规模的木偶应用程序,它最初是从路由器/控制器运行的。
这是我的问题 - 在控制器中包含不适用于路线的其他功能是不错的做法?
所以说我有以下方法:
index : function() {
alert('test!');
}
是否与最佳实践一致,能够在路由初始化时声明控制器中未调用的其他函数?像这样:
noRouteAssociated: function() {
alert('test!');
}
index: function() {
this.noRouteAssociated();
}
显然这是一个简化的例子,但我试图避免在方法中放入大量信息或函数声明,因为它们与路由器相关联。
答案 0 :(得分:1)
控制器的角色和职责最好由@davidsulc在this SO post中说明,更好的是他的新book。
一般来说,可以包含不适用于路线的方法,如果他们正在控制应用的工作流程。事件触发是一个很好的示例,但是如果要更改某些内容的外观或从数据库中检索数据,则应分别将这些方法移动到视图或模型中。以下块引用直接来自Marionette's controller documentation。
名称控制器必然会引起一些混乱,这是相当不幸的。关于如何称呼这个对象有一些讨论和争论,人们会把它与MVC风格控制器混淆的想法出现了很多次。最后,我们决定将此称为控制器,因为典型用例是控制应用程序和/或模块的工作流程和过程。
但事实是,这是一个非常通用的多用途对象,可以在许多不同的场景中提供许多不同的角色。我们总是乐于接受建议,有充分的理由和讨论,将对象重命名为更具描述性,更少混淆等。如果您想建议其他名称,请在邮件列表或github问题列表中进行。