2016-11-25 5 views
0

私はアクセルRauschmayerでthis articleを読み、そして具体的には以下のsentencs疑問を抱いた。commonjsの「元のエクスポートオブジェクト」はどういう意味ですか?

Node.jsのスタイル単一値の輸出は動作しません。 Node.jsで module.exports = function(){...} モジュールAでこれを実行した場合、エクスポートされたオブジェクトを使用することはできませんが、 オブジェクトの代わりに の値をエクスポートできます。 Bの変数aはまだ がAの元のエクスポートオブジェクトを参照しているため、モジュールBの関数が機能します。

"Aの元のエクスポートオブジェクト"とはどういう意味ですか?

+0

これは、その文のNodeJSではなく、CommonJSシステムを指しています。元のエクスポートオブジェクトは、 'module.exports = function {...}'を実行したときに上書きしようとしたオブジェクトです。言い換えれば、 'B'では' A'の 'module.exports'のプロパティに*割り当てなければ' A'をインポートしません。 NodeJSでは、 'module.exports'があればそれに直接割り当てられた値を取得します。コメントのために@squintを –

+0

ありがとう。 'export'に関してNodejsとCommonJSとの間に違いはありますか? 'Node.jsでは、次のようにオブジェクトの代わりに単一の値をエクスポートすることができます:module.exports = function(){...}これをモジュールAで行った場合、モジュールBのエクスポートされた関数 ' – Blake

+0

申し訳ありませんが、私は上記の私のコメントで少しだと思います。これは周期的な依存関係を指しているので、私は、あなたがその状況で何をインポートするのかに限界があると言っていると思います。したがって、 'module.exports'を、BをAにインポートしたBをインポートしたAの値で上書きすると、BはAより上書きされた' exports'値にアクセスすることができません。上書きされたので、上書きされた値ではなく、元の値である 'module.exports'を取得します。 –

答えて

0

commonjs(node.js)の各モジュールはモジュールシステムによって作成されたデフォルトのexports objectをエクスポートします。これは空のオブジェクトとみなすことができます(実際は空ではありません)。

著者は、このデフォルトのエクスポートオブジェクトをoriginal exports objectと呼びました。

+0

なぜこのように 'module.exports = function(){...}'が動作しないのですか? – Blake

関連する問題