module.exportsと exportsの違いがわかりません!教えて下さい
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答1件
0
module.exportsが実際に外部へ公開されるもので、exportsはmodule.exportsへの参照です。
初期値はプロパティを追加できる空のオブジェクトが設定されています。
イメージとして以下の感じです。
Javascript
1exports = module.exports = {};
両者の使い分けは、
0. モジュールが一つのコンストラクタ関数を公開するなら、module.exportsを置き換える。
0. モジュールが複数のプロパティ、関数を公開するならば、exportsへ追加する。
例) コンストラクタ関数を公開する場合
Javascript
1// 呼び出す側のファイル(code.js) 2var Person = require('./person.js'); 3 4var takeshi = new Person('takeshi', 18); 5console.log(takeshi); //プロパティと値を出力
javascript
1// 呼び出される側のファイル(person.js) 2module.exports = function(name, age) { 3 this.name = name; 4 this.age = age; 5}
例) 複数のプロパティ、関数を公開する場合
javascript
1// 呼び出す側のファイル(code.js) 2var Tools = require('./tools.js'); 3 4console.log(Tools.add(2, 6)); 5console.log(Tools.sub(8, 7));
javascript
1// 呼び出される側のファイル(tools.js) 2exports.add = function(a, b) { 3 return a + b; 4} 5 6exports.sub = function(a, b) { 7 return a - b; 8}
注意するのはexportsを置き換えるような書き方をすると、
module.exportsへの参照が切れてしまうだけで、exportsへ設定した値は公開されません。
javascript
1// これは意味なしです 2exports = function() { 3 ... 4}
例のコードが雑ですが、こんな感じだと思います。
まだ習得中なので詳しい方どうぞ(^ワ^;)
投稿2015/10/04 15:38
総合スコア263
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。