1

私のシナリオ:少量の構成データをアップロードし、データベースからデータを変更することはめったにありません。構成exports.configファイルの代わりに使用して、アプリ管理者(sysadmin:)ではなくWeb経由でアプリケーションを構成できるようにします。インターフェイスであり、このモジュールがrequire'dされるたびにこのデータが再ロードされないようにしたかったのです。

node.jsモジュール(関数定義以外)にある[初期化]コードは、requireこのモジュールの回数に関係なく、プロセスの存続期間ごとに1回だけ実行されると想定するのは正しいですか?

おそらくばかげた質問ですが、node.jsがどのように機能するかについていくつかの側面を理解するのに苦労しています。

4

1 に答える 1

2

はい。

ファイル/モジュールは、プロセスの有効期間ごとに何度も必要になる可能性がありますが、実行されるのは 1 回だけです。少なくともデフォルトでは。

configアプリの初期化時に一度だけテーブルをクエリするだけで、エクスポートされた値はアプリが再起動されるまで一定になるため、これはうまく機能します。


nodejsモジュールキャッシュドキュメントから

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

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

モジュールでコードを複数回実行する場合は、関数をエクスポートして、その関数を呼び出します。

于 2012-12-24T12:18:53.530 に答える