3

我正在构建我的第一个backbone.marionette 应用程序,有些事情我觉得很困惑。

在 TodoMVC 的主干.marionette版本中,似乎有两个不同的模块执行应用程序的工作:

首先是 TodoMVC,它是 Backbone.Marionette.Application 的一个实例,然后是 TodoMVC.TodoList,它似乎只不过是一个容纳控制器和路由器的容器。

为什么不简单地将控制器对象添加到 App 对象中?

让我感到困惑的另一件事是:在我在 stackoverflow 上讨论过的其他木偶应用程序中,例如这个,addInitializer() 是在应用程序对象上调用的,但在 TodoMVC 应用程序中 addInitializer() 是在 todolist 对象上调用的。

这是否特定于想要拥有控制器对象的应用程序?

我还发现命名相当混乱,因为 TodoMVC(应用程序)和 Todolist(控制器容器?)都包含暗示它们是基础应用程序的名称。Todolist 模块可以在语义上更名为 TodoController 吗?

4

1 回答 1

2

为什么不简单地将控制器对象添加到 App 对象中?

这是一种模块化设计选择,与单一职责原则相关。TodoMVC 是顶级应用程序,TodoList 是我们应用程序中的一个模块(或子应用程序),它们都倾向于自己的花园。这使我们可以在不增加顶级应用程序代码的情况下制作任意数量的模块。

在其他木偶应用程序中... addInitializer() 在应用程序对象上调用,但在 TodoMVC 应用程序中 addInitializer() 在 todolist 对象上调用

我认为这只是Application.Modules的约定问题。TodoMVC 应用程序不需要任何初始化代码,因此我们不添加初始化函数。

于 2012-11-13T07:57:04.473 回答