Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

node.jsのexpressでWebアプリを作っているとどんどんapp.jsが長大になっていくお・・・
というわけで分割する方法色々

機能毎に別アプリとして別ポートで起動させる

利用者側のapp.js、管理画面機能のmanager.jsとか完全に別のアプリとして実装、別ポートで起動、リバースプロキシで別のサブドメインを割り当ててさばく
セッション情報の共有(Cookieのdomain)に一工夫が必要だが、そもそも管理画面のセッション情報を利用者側のアプリで必要にすることなんてほぼないわけで
同じようにリバースプロキシを設定すれば別ポートのアプリ同士をディレクトリに見せかけることもできる

DBの接続情報などは設定ファイルに出せばいいので、これはこれで有効かなという気もする

Router機能を使う

今回のメインディッシュで例はExpress4前提

/などのメインはapp.js、/dir1以下はdir1.js、/dir2以下はdir2.jsでさばく
node app.jsで全部起動する

まず、dir1.js側の実装

dir1.js
var express = require('express');

module.exports = function(receiveFromAppJs){
    var router = express.Router();

    router.get('/foo', function(req, res){
        // ...
    });

    router.get('/bar', function(req, res){
        // ...
    });

    return router;
};

同じようにdir2.jsも作っておく
そしてメインのapp.js側で

app.js
//...
app.use('/dir1', require('./dir1.js')({a:1, b:2}));
app.use('/dir2', require('./dir2.js')({a:1, b:2}));
//...

と書いておけば

  • /dir1/fooのアクセスはdir1.jsの/fooに
  • /dir1/barのアクセスはdir1.jsの/barに
  • /dir2/fooのアクセスはdir2.jsの/fooに
  • /dir2/barのアクセスはdir2.jsの/barに

・・・という形にとりはからってくれる

{a:1, b:2}などはサブプログラムに渡したいオブジェクトを指定
サブプログラム側でreceiveFromAppJsで参照できるので、データベースの接続とかはここで渡すといいかもしれない

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away