Javascriptを勉強し始めて間もないので、間違いがあれば訂正頂けるとうれしいです。
今回はserver.jsからどのファイルがどの順番で参照されているかのメモです。
meanを使ってオリジナルのものを作る場合にいじる必要のあるファイルを見ていきます。(他にもあれば助言ください。)
MEANバージョン:0.3.3
$APP_HOME
はmeanコマンドで各種ファイルが展開されるディレクトリとします。
サーバサイド($APP_HOME/server.js)
抜粋でメモしていきます。
var config = require('./server/config/config');
config
に$APP_HOME/server/config/config.js
を実行したものを代入しています。
config.js
ではさらに$APP_HOME/server/config/env/
にあるファイルを呼び出しています。
module.exports = _.extend( //オブジェクト拡張関数?
require('./env/all'),
require('./env/' + process.env.NODE_ENV) || {} // 起動モードによって読み込むファイルが変わる
);
読み込んだ設定ファイルからconfig
には以下の情報が入っているはず。
db
はall.js
と動作モード毎、どちらのファイルでも定義されてるように見えて、どちらが参照されているかは理解できてません。。。
config = {
root: , port: , hostname: , db: , templateEngine: , sessionSecret: ,
sessionCollection: , app: {name: }, facebook: {略}, twitter: {略},
github: {略}, google: {略}, linkedin: {略}
}
以上でコンフィグの読み込みは終了したと思われますので、再びserver.jsに戻って次の処理に移ります。
var app = require('./server/config/system/bootstrap')(passport, db);
app
に./server/config/system/bootstrap.js
を実行したものを代入しています。
function bootstrapModels() {
require('../util').walk(appPath + '/server/models', null, function(path) {
require(path);
});
}
./server/models/
配下のファイルをすべて読み込んでいる?
デフォルトではuser.js
のみで、これはOpenIDのログインに必要なユーザ情報を集約しているようです。
if (stat.isFile() && /(.*)\.(js|coffee)$/.test(file)) {
callback(newPath); // スクリプトファイルならフルパスをbootstrap.jsへ返す。
} else if (stat.isDirectory() && file !== excludeDir) {
walk(newPath, excludeDir, callback); // ディレクトリならさらにwalk関数を回す。
}
という理解で間違いないはず・・
最後にexpress.js
を呼び出している模様。
var app = express();
require(appPath + '/server/config/express')(app, passport, db);
express.js
は長くなるので次回に回します。
ここまでの図を適当に作成してみました。(sphinx使いたいだけなので随時更新します。)