検証用コード
my_app.js.coffee
@MyApp = do (Backbone, Marionette) ->
App = Marionette.Application.extend
initialize: (options) ->
console.log 'initialize'
app = new App()
app.on 'start', ->
console.log 'start'
Backbone.history.start
pushState: true
app.addInitializer ->
console.log 'addInitializer in MyApp'
app
app.on 'before:start', ->
console.log 'before:start'
$(document).on 'ready', ->
console.log 'before start MyApp'
console.log '--------------------'
MyApp.start()
console.log '--------------------'
console.log 'after start MyApp'
$(document).on 'page:load', ->
Backbone.history.checkUrl()
@MyApp.module 'Module1', (Module1, App, Backbone, Marionette, $, _) ->
App.addInitializer ->
console.log 'addInitializer in Module1'
@MyApp.module 'Module2', (Module2, App, Backbone, Marionette, $, _) ->
App.addInitializer ->
console.log 'addInitializer in Module2'
@MyApp.module 'Module10', (Module10, App, Backbone, Marionette, $, _) ->
App.addInitializer ->
console.log 'addInitializer in Module10'
実行結果
before start MyApp
--------------------
before:start
addInitializer in MyApp
addInitializer in Module1
addInitializer in Module2
addInitializer in Module10
start
--------------------
after start MyApp
結論
- まず
before:start
イベントが発火する。 - 次に
addInitializer
関数の内容が定義された順番で実行される。 - 最後に
start
イベントが発火する。 initialize
メソッドなんてなかったんや。