ホームページ  >  記事  >  ウェブフロントエンド  >  エクスポートと module.exports

エクスポートと module.exports

伊谢尔伦
伊谢尔伦オリジナル
2016-11-21 13:20:56999ブラウズ

今のところ、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 の間の関係が壊れます。では、これを参照すると、空のオブジェクトが得られます。 。 。

それで、結論は何ですか?


エクスポートしたいものを空のオブジェクト上で直接展開できる場合、エクスポートを使用すると時間と労力を確実に節約できます

エクスポートしたいものが空のオブジェクトを完全に覆う必要がある場合object 迷ったときは module.exports を使うしかありません

迷ったときは module.exports を使ってください。 。 。


実際には、書くたびにその絵とその文章について考えれば、すべてが自然に進むでしょう。コードを書く量を減らすためには、一生懸命勉強する必要があります。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。