我一直在关注Backbone Marionette,已经为我自己的纯Backbone应用程序模仿了它的一部分。看起来真的很有希望,但我不确定的一件事是模块结构和初始化程序运行的顺序。主要是关于Backbone.history.start
我想我会有一个顶级Application
,其中包含Auth
,Todo
,Comments
等模块(我通常会从一个简单的todo应用开始尝试出框架)。每个模块都有自己的路由。根据我的理解,在Backbone.history.start()
之前必须对它们进行初始化。我是否只是触发所有模块从我的顶级Application
开始,然后开始历史记录?这将确保在启动Backbone.history
之前初始化模块路由器。这听起来像启动可能不需要的模块,从而减慢了应用程序的速度?
当然,我知道的大多数应用程序都不需要非常大,启动速度可能是可以接受的。但我不知道最新的做法或建议是什么
答案 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)