[解決済み] Node.jsのmodule.exportsとexportsの比較
質問
Node.jsのモジュールで以下のような契約書を見つけました。
module.exports = exports = nano = function database_module(cfg) {...}
とは何が違うのだろう。
module.exports
と
exports
と、なぜこの2つが使われているのかを説明します。
どのように解決するのですか?
設定方法
module.exports
を使用すると
database_module
のときに関数のように呼び出されます。
required
. を設定するだけです。
exports
では、この関数は
をエクスポートするためです。
module.exports
を参照してください。 次のコードでは、ユーザーが関数を呼び出すことはできません。
モジュール.js
以下は動作しません。
exports = nano = function database_module(cfg) {return;}
以下は、以下の場合に動作します。
module.exports
が設定されています。
module.exports = exports = nano = function database_module(cfg) {return;}
コンソール
var func = require('./module.js');
// the following line will **work** with module.exports
func();
基本的に
node.js
はそのオブジェクトをエクスポートしません。
exports
が現在参照しているプロパティをエクスポートします。
exports
が元々参照していたものです。 しかし
Node.js
はオブジェクトをエクスポートします。
module.exports
を参照し、関数のように呼び出すことができます。
2番目に重要でない理由
の両方が設定されています。
module.exports
と
exports
を確保するために
exports
は、先にエクスポートされたオブジェクトを参照しないようにします。 両方を設定することで
exports
を省略記法として使用することで、後々のバグの可能性を回避することができます。
使用方法
exports.prop = true
の代わりに
module.exports.prop = true
は、文字数を節約し、混乱を避けることができます。
関連
-
[解決済み】gulp anythingを実行するたびに、アサーションエラーが発生します。- タスク関数を指定する必要があります
-
[解決済み] package.jsonのチルダ(~)とキャレット(^)の違いは何ですか?
-
[解決済み] なぜGoogleはJSONレスポンスにwhile(1);を前置するのでしょうか?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] event.preventDefault() vs. return false
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] Node.jsのmodule.exportsの目的と使い方を教えてください。
-
[解決済み] CommonJSとAMDとRequireJSの関係?
-
[解決済み】JavaScript版sleep()とは?)
-
[解決済み】CommonJsモジュールシステムのmodule.exportsとexportsの違いについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
要素ツリー制御によるvueTreeテーブル
-
元のイベントが実行されなかった後に要素を追加するためのjQueryソリューション
-
Vueにシンプルなメモ帳機能を実装
-
[解決済み】Node Version Manager のインストール - nvm コマンドが見つかりません。
-
[解決済み】JavaScriptエラー(Uncaught SyntaxError: Unexpected end of input)
-
[解決済み】ReactJSでエラー発生 Uncaught TypeError: Super expression は null か関数でなければならず、undefined ではありません。
-
[解決済み】「.addEventListener is not a function」なぜこのエラーが発生するのか?
-
[解決済み] Node.jsのmodule.exportsの目的と使い方を教えてください。
-
[解決済み] JavaScriptは参照渡しですか?[重複あり]
-
[解決済み】CommonJsモジュールシステムのmodule.exportsとexportsの違いについて