【问题标题】:Backbone Marionette Module Order of Initializers初始化器的主干木偶模块顺序
【发布时间】:2012-07-23 09:58:14
【问题描述】:

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

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

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

【问题讨论】:

    标签: backbone.js marionette


    【解决方案1】:

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

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

    您可以随时手动拨打MyApp.MyModule.start()

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多