2012-07-23 49 views
1

我一直在寻找Backbone Marionette,一直在模拟它的部分功能,用于我自己的纯Backbone应用程序。看起来很有前途,但我不确定的一件事是Module构件和初始化器运行的顺序。主要关于Backbone.history.startBackbone Marionette模块初始化程序的顺序

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

当然,我知道的大多数应用程序不需要非常大,启动速度可能是可以接受的。但是我不知道什么最好的做法或建议

回答

2

模块,默认情况下,父应用程序启动,但是你可以重写此:

子模块可以通过设置它的 startWithParent假覆盖此行为。这可以防止 父母的开始呼叫启动它。

然后您可以随时拨打MyApp.MyModule.start()

当您拨打Application.start()时,模块以相反的顺序运行。从docs

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

你要打电话Backbone.history.start()调用Application.start()后,在深圳的应用实例化至少一个路由器。呼叫Backbone.history.start()(至少根据this answer from BB.Marionette's Derick Bailey

后,您应该没有任何问题实例化其他路由器