0

現在、Nodeを使用してWebアプリを構築していますが、Nodeが必要なファイルまたはモジュールをどのようにロードするかについて興味があります。

ビューとサーバーの構成にExpressを使用していますが、すべてのNodeの例(ExpressがMVCの例を提供していることはわかっています)が一般的なMVCパターンに実際に準拠していないことがわかりました。また、NodeがMVCに必ずしも適しているとは限らないことも認識していますが、MVCが好きなので、我慢してください。

次のルート宣言を検討する場合、ここで要求と応答のロジックを制御できるため、これをコントローラーとして使用すると効果的です。

module.exports = function (app) {

app.get('/', function (req, res) {

    res.render('index', { layout: false });


});

MVCアーキテクチャを試して従うために、ルートを関連するパスに効果的に分割して、実際にコントローラーを作成しました。ただし、別のルートファイルがある場合は常に、必要なモジュールの独自のセットが含まれている必要があります。例えば:

var mongo = require('mongoskin');

次に、サーバー構成設定を保持するapp.jsまたはserver.jsファイルで必要なルートファイルを宣言します。

Nodeがモジュールをロードする方法を知らないので、このようにルートを分割するとアプリケーションの速度が低下するかどうか疑問に思っています。必要に応じてロードしている場合、確かにこの実装はそれを遅くする必要がありますか?

4

2 に答える 2

4

必要なモジュールは一度だけ読み込まれてからキャッシュされるため、アプリを必要な数のモジュールに分割して、アプリをクリーンに整理してください。を呼び出すファイルが20個ある場合require('mongoskin')でも、そのモジュールは1回だけロードされます。

于 2013-01-30T15:22:50.160 に答える
2

node.jsドキュメントからの引用:

モジュールは、最初にロードされた後にキャッシュされます。これは、(とりわけ)require('foo')を呼び出すたびに、同じファイルに解決される場合、まったく同じオブジェクトが返されることを意味します。

require('foo')を複数回呼び出しても、モジュールコードが複数回実行されることはありません。これは重要な機能です。これを使用すると、「部分的に完了した」オブジェクトを返すことができるため、サイクルが発生する場合でも推移的な依存関係をロードできます。

于 2013-01-30T15:23:11.877 に答える