木偶App初始化器有什么意义?

Owe*_*ack 5 marionette

我真的不明白它们是如何有用的.在介绍初始化程序的原始文章中,这是代码示例:

App = new Backbone.Marionette.Application();

App.addInitializer(function(){
  // add some app initialization code, here
});

App.addInitializer(function(){
  // more initialization stuff 
  // for a different part of the app
});

// run all the initializers and start the app
App.start();
Run Code Online (Sandbox Code Playgroud)

但是,据我所知,^之间没有区别,而且:

App = new Backbone.Marionette.Application();

// add some app initialization code, here

// more initialization stuff 
// for a different part of the app
Run Code Online (Sandbox Code Playgroud)

后一代码的好处是你可以实际控制初始化代码的顺序,而初始化程序是以随机顺序运行的.那么,有什么优势addInitializer呢?

Tom*_*Tom 2

我认为主要的优点是语义 - 这是一个非常具有描述性的方法名称 - 以及相关功能的分组。我使用命名函数编写初始化程序,这有助于调试和描述性:

App.addInitializer(function startSomePartOfTheApp () {

});
Run Code Online (Sandbox Code Playgroud)

另一个有用的功能是该函数绑定到应用程序实例。这使您可以选择混合初始值设定项,这在大型应用程序中非常有用。

但最终,您可以按照您建议的方式实现相同的功能。