Backbone Marionette模块初始化器的顺序

时间:2012-07-23 09:58:14

标签: backbone.js marionette

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

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

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

1 个答案:

答案 0 :(得分:2)

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

  

子模块可以通过设置它来覆盖此行为   startWithParent为false。这可以防止它被启动   父母的开始电话。

然后,您可以随时手动拨打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

相关问题