ホームページ > 記事 > ウェブフロントエンド > エクスポートと module.exports
今のところ、commonJSのモジュール的な書き方は仕事で使っていませんが、今でもこの書き方のソースコードや記事をよく見かけますが、exportsやmodule.exportsを見るとちょっと戸惑うことがあります。 。 。初心者の方も私と同じような疑問があるかと思いますが、調べてみると本当にたくさんあります。 。いくつかの記事を読みましたが、stackoverflow の友人が良い記事を書いていたので、ここに記録しました。
実際、この図を覚えて理解すれば区別するのは簡単です:
この図は、理解を容易にするために、次のように説明できると思います。 js ファイルはモジュール化する必要があります。その時点で、ノード環境は 2 つの変数 exports と module.exports をファイルに挿入します。最初にこれら 2 つの変数は同じ空のオブジェクトを指します。その後、一連の操作を実行します。これら 2 つの変数、これが重要であることに注意してください。参照を必要とする他のモジュールによるその後の使用のために、 module.exports のみが返されます。
では、ここでは操作の関係について説明するだけですが、なぜ 2 つ必要なのでしょうか? module.exports がない限り、それに値を代入して返すのが正常です。輸出するために何をしているのですか? 。 。 。あはは、私が理解しているのは、はい、いつでも module.exports を使用でき、問題は起こらないということですが、
module.exports.a = 1; module.exports.b = function() {}; module.exports.c = 'ccc';と書くたびに疲れてしまいますか?? それから、次のように書きます:
exports.a = 1; exports.b = function() {}; exports.c = 'ccc';
輸出を思いついたのは、書くことが減ったせいでしょうか? 。 。私もそう思います、ははは、プログラマーは非常に怠け者です。 ここで問題が発生します。 module.exports の代わりに imports を使用するだけですが、注意してください。そうしないと、次のように問題が発生します。
exports = function A() {}
クラスをエクスポートしたい場合は、次のように記述します。上記のことを考慮してください。この図では、module.exports が返されます。ここでの代入により、exports と module.exports の間の関係が壊れます。では、これを参照すると、空のオブジェクトが得られます。 。 。
それで、結論は何ですか?
実際には、書くたびにその絵とその文章について考えれば、すべてが自然に進むでしょう。コードを書く量を減らすためには、一生懸命勉強する必要があります。