LoginSignup
9
9

More than 5 years have passed since last update.

MEAN.IO server.jsのファイル参照順序 備忘録

Last updated at Posted at 2014-05-23

Javascriptを勉強し始めて間もないので、間違いがあれば訂正頂けるとうれしいです。
今回はserver.jsからどのファイルがどの順番で参照されているかのメモです。
meanを使ってオリジナルのものを作る場合にいじる必要のあるファイルを見ていきます。(他にもあれば助言ください。)

MEANバージョン:0.3.3

$APP_HOMEはmeanコマンドで各種ファイルが展開されるディレクトリとします。

サーバサイド($APP_HOME/server.js)

抜粋でメモしていきます。

server.js①
var config = require('./server/config/config');

config$APP_HOME/server/config/config.jsを実行したものを代入しています。
config.jsではさらに$APP_HOME/server/config/env/にあるファイルを呼び出しています。

config.js
module.exports = _.extend( //オブジェクト拡張関数?
  require('./env/all'),
  require('./env/' + process.env.NODE_ENV) || {} // 起動モードによって読み込むファイルが変わる
);

読み込んだ設定ファイルからconfigには以下の情報が入っているはず。
dball.jsと動作モード毎、どちらのファイルでも定義されてるように見えて、どちらが参照されているかは理解できてません。。。

config = {
  root: , port: , hostname: , db: , templateEngine: , sessionSecret: ,
  sessionCollection: , app: {name: }, facebook: {略}, twitter: {略},
  github: {略}, google: {略}, linkedin: {略}
}

以上でコンフィグの読み込みは終了したと思われますので、再びserver.jsに戻って次の処理に移ります。

server.js②
var app = require('./server/config/system/bootstrap')(passport, db);

app./server/config/system/bootstrap.jsを実行したものを代入しています。

bootstrap.js①
function bootstrapModels() {
 require('../util').walk(appPath + '/server/models', null, function(path) {
  require(path);
 });
}

./server/models/配下のファイルをすべて読み込んでいる?
デフォルトではuser.jsのみで、これはOpenIDのログインに必要なユーザ情報を集約しているようです。

util.js
if (stat.isFile() && /(.*)\.(js|coffee)$/.test(file)) {
 callback(newPath); // スクリプトファイルならフルパスをbootstrap.jsへ返す。
} else if (stat.isDirectory() && file !== excludeDir) {
 walk(newPath, excludeDir, callback); // ディレクトリならさらにwalk関数を回す。
}

という理解で間違いないはず・・
最後にexpress.jsを呼び出している模様。

express.js
var app = express();
require(appPath + '/server/config/express')(app, passport, db);

express.jsは長くなるので次回に回します。
ここまでの図を適当に作成してみました。(sphinx使いたいだけなので随時更新します。)

mean-server.jpg

9
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
9