質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

1回答

3637閲覧

Node.js module.exportsと exportsの違いについて

the

総合スコア112

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

2クリップ

投稿2015/10/04 04:37

module.exportsと exportsの違いがわかりません!教えて下さい

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答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

StupidDog

総合スコア263

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問