ホームページ  >  記事  >  ウェブフロントエンド  >  nodejsのexportsとmodule.exportsの違いを詳しく紹介_基礎知識

nodejsのexportsとmodule.exportsの違いを詳しく紹介_基礎知識

WBOY
WBOYオリジナル
2016-05-16 17:43:411495ブラウズ

これを使用してモジュールを作成できるため、nodejs モジュールのエクスポート オブジェクトに精通している必要があります。例: (これがrocker.jsファイルであると仮定します)

コードをコピー コードは次のとおりです:

exports .name = function() {
console.log('私の名前はレミー・キルミスターです');

引用した別のファイル内

var Rocker = require('./rocker. js');
rocker.name(); // '私の名前はレミー・キルミスターです'


では、Module.exports とは何でしょうか?それは合法ですか?
実際、Module.exports は実際のインターフェイスであり、exports はその補助ツールにすぎません。最終的に呼び出しに返されるのは、exports ではなく Module.exports です。
エクスポートによって収集されたすべての属性とメソッドは Module.exports に割り当てられます。もちろん、これには前提があります。つまり、Module.exports 自体にはプロパティやメソッドがありません。 Module.exports にすでにいくつかのプロパティとメソッドがある場合、exports によって収集された情報は無視されます。

rocker.js を次のように変更します:


コードをコピーします コードは次のとおりです:
module.exports = 'ROCK IT!';
exports.name = function() {
console.log('私の名前はレミー キルミスター');

再度rocker.jsを参照して実行します



コードをコピー
コードは次のとおりです: varrocker = require( './rocker.js'); rocker.name(); // TypeError: オブジェクト ROCK IT!

見つかったエラー: オブジェクト "ROCK IT!" 名前メソッドがありません
ロッカー モジュールは、エクスポートによって収集された名前メソッドを無視し、文字列 "ROCK IT!" を返します。したがって、モジュールは必ずしも「インスタンス化されたオブジェクト」を返す必要はないということになります。モジュールには、ブール値、数値、日付、JSON、文字列、関数、配列などの正当な JavaScript オブジェクトを使用できます。
モジュールには、任意の値を設定できます。プロパティとメソッドを Module.exports に明示的に設定しない場合、モジュールは Module.exports に設定されたプロパティをエクスポートします。

次の例では、モジュールはクラスです:




コードをコピーします
コードは次のとおりです。 module.exports = function(name, age) { this.name = 名前;
this.age = 年齢;
this.about = function() 🎜>console.log(this.name ' is ' this.age ' years old');


;



コードをコピーします

コードは次のとおりです:
var Rocker = require('./rocker.js' ); var r = new Rocker('Ozzy', 62); r.about(); // オジーは 62 歳です 次の例では、は配列です:



コードをコピー

コードは次のとおりです:
module.exports = [ 'レミー キルミスター'、'オジー オズボーン'、'ロニー ジェームス ディオ'、'スティーブン タイラー'、'ミック ジャガー']; 次のように適用できます:

コードをコピーします

コードは次のとおりです。
var Rocker = require('./rocker.js'); >console.log('天国のロッキン: 'rocker[2]); //天国のロッキン: ロニー・ジェームス・ディオ これで、モジュールを特定のタイプにしたい場合は理解できました。 Module.exports を使用します。必要なモジュールが従来の「インスタンス化されたオブジェクト」である場合は、エクスポートを使用します。 Module.exports への属性の追加は、エクスポートへの属性の追加と似ています。例:



コードをコピー


コードは次のとおりです:

module.exports.name = function() { console.log('私の名前はレミー キルミスター') ;
同様に、エクスポートは次のようになります
コードをコピーします コードは次のとおりです:

exports.name = function() {
console.log('My name is Lemmy Kilmister');

これら 2 つの結果は同じではないことに注意してください。前述したように、module.exports は実際のインターフェイスであり、exports はその補助ツールにすぎません。元の「インスタンス化されたオブジェクト」から型に変更する予定がない限り、エクスポートを使用することをお勧めします。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。