LoginSignup
3
3

More than 5 years have passed since last update.

長くなったapp.jsをどうにかしたい その2

Posted at

node.js / express で徒然なるままに Webアプリを書いてると、どうしても長大になってくる app.js

以前

長くなった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 それぞれでロードしたほうがいいでしょうし

3
3
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
3
3