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

时间:2014-01-08 03:17:36

标签: marionette

我真的不明白它们是如何有用的。在引入初始值设定项的原始article中,这是代码示例:

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();

然而,据我所知,^和之间没有区别,而且:

App = new Backbone.Marionette.Application();

// add some app initialization code, here

// more initialization stuff 
// for a different part of the app

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

2 个答案:

答案 0 :(得分:2)

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

App.addInitializer(function startSomePartOfTheApp () {

});

另一个有用的功能是该函数绑定到Application实例。这使您可以选择混合初始化程序,这在较大的应用程序中很有用。

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

答案 1 :(得分:1)

Marionette应用程序具有初始化程序,因此您可以编写在App.start()之后运行的代码

这有几个用途:

  • 将代码放入将在添加内联脚本后执行的.js文件

    <script type='text/javascript'>
    $(document).ready(function () { 
             App.start(); 
    } );
    </script>
    
  • 一旦知道定义了集合,就执行集合的初始提取

  • 设置菜单代码

有趣的笔记:

  1. 如果应用已经启动,则会立即启动
  2. 让您远离JavaScript函数可用性的惊喜。