1

我一直在研究 Backbone Marionette,一直在为我自己的纯 Backbone 应用程序模仿它的一部分。看起来很有希望,但我不确定的一件事是初始化程序运行的模块结构和顺序。主要是关于Backbone.history.start

Application我想我将拥有一个包含 , 等模块AuthTodo顶层(Comments我通常从一个简单的 todo 应用程序开始尝试框架)。每个模块都有自己的路线。据我了解,它们必须在我之前进行初始化Backbone.history.start()。我是否只是触发所有模块从我的顶层Application开始,然后开始历史记录?这将确保模块路由器在启动之前被初始化Backbone.history。这听起来像是启动了可能不需要的模块,从而减慢了应用程序的速度?

当然,我知道的大多数应用程序,不需要很大,启动速度可能是可以接受的。但是我想知道最佳实践或建议是什么

4

1 回答 1

2

默认情况下,模块从父应用程序开始,但您可以覆盖它:

子模块可以通过将 startWithParent 设置为 false 来覆盖此行为。这可以防止它被父级的 start 调用启动。

MyApp.MyModule.start()然后,您可以随时手动调用。

当您调用 时Application.start(),模块以相反的顺序运行。从文档

子模块的启动是在深度优先层次遍历中完成的。也就是说,Foo.Bar.Baz 的层次结构将首先启动 Baz,然后是 Bar,最后是 `Foo.

您需要在调用Backbone.history.start()后调用Application.start(),至少在应用程序中实例化一个路由器。调用后实例化其他路由器应该没有任何问题Backbone.history.start()(至少根据BB.Marionette 的 Derick Bailey 的这个答案

于 2012-10-28T01:49:44.697 回答