howdylikes

Google Developersってわかりづらいよね

AngularJS Module#config Module#runについて

configとrunメソッドについてメモ

リファレンス
https://code.angularjs.org/1.4.7/docs/api/ng/type/angular.Module#config
仮引数はfuncitonのみ、factoryなどにある文字列とかはない=DIするものではないということですね

これらはModule Methodsに位置づけられています
https://code.angularjs.org/1.4.7/docs/guide/di#module-methods

Module#config

configはモジュール読み込み時に実行される

Module#run

runはモジュール読み完了時に実行される

検証 moduleを読み込まない場合

// script.js

var myModule = angular.module('myModule', []);
myModule
    .config(function () {
        console.log("myModule#config");
    })
    .run(function () {
        console.log("myModule#run");
    });

var app = angular.module('myapp', []);
app
    .config(function () {
        console.log("myapp#config");
    })
    .run(function () {
        console.log("myapp#run");
    });

app.controller('myController', function(){
    console.log("myapp#myController");
});

この場合、結果は以下のようになります
定義しただけで読み込まないのでそりゃそうですね

myapp#config
myapp#run
myapp#myController

検証 入れ子で読み込む場合

// script.js

var myModule = angular.module('myModule', []);
myModule
    .config(function () {
        console.log("myModule#config");
    })
    .run(function () {
        console.log("myModule#run");
    });

var app = angular.module('myapp', ['myModule']);
app
    .config(function () {
        console.log("myapp#config");
    })
    .run(function () {
        console.log("myapp#run");
    });

app.controller('myController', function(){
    console.log("myapp#myController");
});

この場合、結果は以下のようになります
myModuleがすべて先に来るわけではないの注意かも?
実際どうなのかはわかりませんが、myModuleのrun実行時にmyappのconfigで何か変更が加えられる可能性があるかもしれません

myModule#config
myapp#config
myModule#run
myapp#run
myapp#myController