blog

Nodejsエクスポート vs moudle.エクスポート

このモジュールがクラスである場合、呼び出し元がクラスのコンストラクタであり、直接新しいインスタンスを作成できるように、直接代入する必要があります。...

Feb 11, 2020 · 2 min. read
シェア

まずはその違いから

1.exports = module.exports = {};

2.exportsはmodule.exportsへの参照です。

3. module.exportsの初期値は空のオブジェクト{}なので、exportsの初期値も{}です。

4. requireはモジュールを参照し、exportsの代わりにmodule.exportsを返します!!!!

5. exports.xxxは、呼び出されたモジュールから直接見えるように、エクスポートされたオブジェクトのプロパティをぶら下げることと同じです。

6. exports = exportsオブジェクトを再割り当てすることと同じです。このモジュールがクラスである場合、呼び出し元がクラスのコンストラクタであり、新しいインスタンスを直接生成できるように、module.exportsを直接割り当てる必要があります。

もう一度例を。

例1:

var name = 'rainbow';
exports.name = name;
exports.sayName = function(){
 console.log(name);
}
// 輸出に値を割り当てることは、輸出に値を割り当てることと同じである。 module.exports この空のオブジェクトは、等価な2つのプロパティを追加する:
var name = 'rainbow';
module.exports.name = name;
module.exports.sayName = function(){
 console.log(name);
}

例2:

 exports = module.exports = somethings
 //  
 module.exports = somethings
 exports = module.exports 
 // module.exports = somethings   mudole.exports オーバーライドが実行され、その時点で module.exports 輸出との関係は破綻している。mudole.exports は新しいメモリブロックを指し、エクスポートは元のブロックを指す。 module.exports 輸出もまた、同じメモリー、あるいは同じ" "以上 exports = module.exports.

例3:

exports = function(){}; // これは輸出に値を再割り当てしている。 module.exports この2つには何の関連性もない。

例4:

module.exports.something = function(){}; exports.something = function(){}; // 上の2つの方程式は等価である

例5が最も重要です:

// index.js var something = require('./requireMe'); something(); // requireMe.js exports.something = function(){ console.log('am a function'); } // 上記のコードではエラーが発生する。 module.exports これはオブジェクトであり、直接実行することはできない //修正モード1 // requireMe.js module.exports = function(){ console.log('am a function'); } // コードを上記のように変更しても、エラーは報告されない。 module.exports は関数で、直接実行できる。 // 修正モード2 // index.js var something = require('./requireMe'); something.something(); // 最も重要なのは、必要とするオブジェクトがsomething属性を持つオブジェクトであることだ。
Read next

LayoutParamsを使って動的にビューのサイズをエレガントに変更するには?

コード:コード分析:ここでは、サイズを変更したいビューがどのレイアウトにあるかを知る必要があります。ここでSurfac

Feb 11, 2020 · 2 min read