node.js / express で徒然なるままに Webアプリを書いてると、どうしても長大になってくる app.js
以前
という記事を書いてExpress.jsのRouterを使えばええじゃろみたいなことで終わってましたが、私の場合は最近はこんな形で落ち着いているよという後日談です
ディレクトリ構成
app.js
lib/
model.js
public/
...
...
...
routes/
dir1.js
views/
...
...
...
app.js
var Model = require('./lib/model.js');
//
// /* 向けのアクセスをさばいたり
// Modelを使うコードを色々書いたり書かなかったり
//
// で、締めあたりにこれ
app.use('/dir1', require('./routes/dir1.js')());
routes/dir1.js
var express = require('express');
module.exports = function(){
var router = express.Router();
var Model = require('../lib/model.js');
//
// /dir1/* 向けのアクセスをさばいたり
// Modelを使うコードを色々書いたり書かなかったり
//
return router;
};
lib/model.jsの中はmongooseだったり、sequelizeだったりと色々
以前のエントリでは
サブプログラム側でreceiveFromAppJsで参照できるので、データベースの接続とかはここで渡すといいかもしれない
と結んでましたが共有オブジェクトに何を入れるかとか選定するのも面倒くさいなーと
app.jsとdir1.jsでlib/model.jsを2回ロード、それによってコネクションが2本はられてしまうというネックもあるもののそこまで気にするほどじゃないレベルならこれでいいやという感じです
アプリケーショングローバルな設定を保存したいならnode-configモジュールで外部ファイルに持たせて app.js と routes/*.js それぞれでロードしたほうがいいでしょうし