初始化程序的主干Marionette模块顺序



我已经研究Backbone Marionette一段时间了,一直在为我自己的纯Backbone应用程序模拟它的部分内容。看起来确实很有希望,但有一点我不确定,那就是初始化程序运行的模块结构和顺序。主要针对Backbone.history.start

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

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

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

子模块可以通过设置startWithParent设置为false。这样可以防止它由家长的开始呼叫。

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

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

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

在调用Application.start()之后,您需要调用Backbone.history.start(),并且在应用程序中至少实例化一个路由器。在调用Backbone.history.start()(至少根据BB.Marinette的Derick Bailey的回答)后,实例化额外的路由器应该不会有任何问题

最新更新