1. ホーム
  2. node.js

[解決済み] 大規模なNode.jsプロジェクトを整理する方法

2023-06-18 09:29:30

質問

大規模なNode.jsプロジェクトを整理する良い方法は何でしょうか?

例えば、express.jsとsocket.ioの両方を使用するアプリですか?これは、アプリケーションの論理構造とファイルシステムの両方を含むでしょう。

現在、私は、1 つのマスター js ファイルに大量のコードを押し込んで、巨大なグローバル オブジェクトにコードを配置している自分を発見しており、それはいたずらな感じがしています。

どのように解決するのか?

初心者の例

もともと@david-ellisがチェックしたものが好きで、良いものなので深く勉強して理解すべきです。しかし、初心者がわかりやすい例を見るためには、もっと簡略化してほしかったと思います。以下は、私が誰かに見せてもらいたかったものです。

expressを使っていて、app.jsファイルにたくさんのルートがリストアップされている典型的なシナリオを挙げてみましょう。その内容は次のようなものでしょう。

app.js

// ... startup code omitted above

app.get('/', function(req, res) {
  res.render('index', { title : 'home' });
});
app.get('/contactus', function(req, res) {
  res.render('contactus', { title : 'contact us' });
});
app.get('/anotherpage', function(req, res) {
  res.render('anotherpage', { title : 'another page' });
});
// and so on...

50のルートがある場合、このファイルはかなり手に負えなくなることが想像できます。app.jsファイルからこのような雑多な部分を取り除くことができれば、素晴らしいことだと思います。

アプリの中に "controllers" フォルダを作成し、次のような構造にします。

app.js
/controllers

コントローラ内にindex.jsという名前のファイルを作成し、以下のコードを記述します。

/controllers/index.js

module.exports.set = function(app) {
   // copy your routes listed in your app.js directly into here
}

ルートリストを "app.js" ファイルからカット&ペーストし、"/controllers/index.js" ファイルに配置します。

app.jsファイルで、ルートを削除し、その代わりに以下を実行します。

app.js

// remove your routes and replace with this code
var controllers = require('./controllers');
controllers.set(app);

さて、もしあなたが "/controllers/index.js" ファイルも分割されたいと思ったなら、Node.js がどのようにコードを整理することができるか、本当にロシア人形のように動作するかを見てもらうために、もう一つの例を追加してみましょう。

/quot;/controllers"内にもう一つファイル "accounts"を追加し、その中に次のように配置します。

/controllers/account.js

module.exports.set = function(app) {
    // put more app route listings here
}

さて、あなたの "/controllers/index.js ファイル内に、 "account.js" への参照を置いてください。

/controllers/index.js

var account = require('./account.js');

module.exports.set = function(app) {
   // your routes here

   // let "account.js" set other routes
   account.set(app);
}

想像できるように、物事をどんどん小さなパーツに分割し、フォルダの中にさらにフォルダを置き、好きなら "require" で参照することも可能です。同じコンセプトで"/lib"やライブラリファイルも使えます。"node_modules"はすでにこれをやっています。

このように、node.jsはプログラミングを楽しむことができる多くの理由のうちの1つです。

管理しやすいExpress 4のルーティング例

これに関連する Express 4 ルートについて私が回答した別の投稿を紹介します。

Express.jsのネストしたルーターで一休み