[解決済み】CommonJsモジュールシステムのmodule.exportsとexportsの違いについて
質問
このページでは( http://docs.nodejitsu.com/articles/getting-started/what-is-require ) によると、"exports オブジェクトを関数または新しいオブジェクトに設定したい場合は、module.exports オブジェクト." を使用する必要があります。
質問はその理由です。
// right
module.exports = function () {
console.log("hello world")
}
// wrong
exports = function () {
console.log("hello world")
}
その結果をconsole.logしたところ(
result=require(example.js)
) であり、最初のものは
[Function]
は、2番目の
{}
.
その理由を説明していただけませんか?こちらの投稿を読みました。 Node.jsにおけるmodule.exportsとexportsの比較 . 参考になるのですが、なぜそのような設計になっているのかが説明されていません。exportsの参照を直接返した場合、問題はないのでしょうか?
解決方法は?
module
は、プレーンなJavaScriptオブジェクトで
exports
プロパティがあります。
exports
は、プレーンなJavaScript変数で、たまたま
module.exports
.
ファイルの最後に、node.jsは基本的に'return'します。
module.exports
から
require
関数を使用します。NodeでJSファイルを表示する簡便な方法は、次のようになります。
var module = { exports: {} };
var exports = module.exports;
// your code
return module.exports;
にプロパティを設定すると
exports
のように
exports.a = 9;
を設定することになります。
module.exports.a
というのも、JavaScriptではオブジェクトは参照として渡されるため、複数の変数を同じオブジェクトに設定すると、それらのオブジェクトは
は
はすべて同じオブジェクトです。
exports
と
module.exports
は同じオブジェクトです。
しかし、もし
exports
を何か新しいものに設定すると、それはもう
module.exports
ということで
exports
と
module.exports
はもはや同じオブジェクトではありません。
関連
-
[解決済み】Google Conversionsが動作しない - スクリプトが読み込まれない
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] package.jsonのチルダ(~)とキャレット(^)の違いは何ですか?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] npm package.jsonファイルのdependencies, devDependencies, peerDependenciesの違いは何ですか?
-
[解決済み] Bowerとnpmの違いは何ですか?
-
[解決済み] Node.jsのmodule.exportsの目的と使い方を教えてください。
-
[解決済み] CommonJSとAMDとRequireJSの関係?
-
[解決済み] Node.jsの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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 Uncaught TypeError: data.push is not a function
-
[解決済み】SyntaxError: ChromeのJavascriptコンソールでUnexpected Identifierが発生する。
-
[解決済み】React、Uncaught ReferenceError。ReactDOMは定義されていません
-
[解決済み】Javascript - ERR_CONTENT_LENGTH_MISMATCH
-
[解決済み】npm install --legacy-peer-deps は具体的に何をするのですか?どんなときに推奨されるのか/どんな使用例が考えられるのか?
-
[解決済み】JS ファイルが net::ERR_ABORTED 404 (Not Found) を取得する)
-
[解決済み】Uncaught ReferenceError。Firebase は定義されていません。
-
[解決済み】Syntax error: JavaScriptの不正なreturnステートメント
-
[解決済み】Javascript、[オブジェクトHTMLInputElement]を表示中。]
-
[解決済み] Node.jsのmodule.exportsとexportsの比較