1. ホーム
  2. javascript

[解決済み] Node.jsのmodule.exportsの目的と使い方を教えてください。

2022-03-16 01:43:10

質問内容

Node.jsのmodule.exportsは何のためにあり、どのように使うのでしょうか?

これに関する情報が見つからないようですが、ソースコードでよく見かけるので、Node.jsのかなり重要な部分のようです。

によると Node.jsのドキュメント :

モジュール

現在の module . 特に module.exports は、exportsオブジェクトと同じです。を参照してください。 src/node.js をご覧ください。

でも、これでは本当に困ります。

は具体的にどのようなものなのでしょうか? module.exports また、簡単な例としてはどのようなものがあるでしょうか?

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

module.exports の結果として実際に返されるオブジェクトです。 require を呼び出します。

は、その exports 変数は、初期状態ではその同じオブジェクトに設定されています(つまり、省略形の "alias" です)ので、モジュールのコードでは通常次のように記述します。

let myFunc1 = function() { ... };
let myFunc2 = function() { ... };
exports.myFunc1 = myFunc1;
exports.myFunc2 = myFunc2;

内部的にスコープされた関数をエクスポート (または "expose") するには、次のようにします。 myFunc1myFunc2 .

そして、呼び出しコードでは

const m = require('./mymodule');
m.myFunc1();

ここで、最後の行は require は(通常)単なるオブジェクトで、そのプロパティにアクセスすることができます。

注意: もしあなたが exports を参照しなくなります。 module.exports . したがって、新しいオブジェクト (または関数参照) を exports を指定した場合、その新しいオブジェクトも module.exports


注目すべきは、追加された名前が exports オブジェクトは、追加する値に対するモジュールの内部スコープ名と同じである必要はないので、そうすることもできます。

let myVeryLongInternalName = function() { ... };
exports.shortName = myVeryLongInternalName;
// add other objects, functions, as required

が続きます。

const m = require('./mymodule');
m.shortName(); // invokes module.myVeryLongInternalName