ホームページ  >  記事  >  ウェブフロントエンド  >  nodejsエクスポートの使用法

nodejsエクスポートの使用法

WBOY
WBOYオリジナル
2023-05-14 10:31:06847ブラウズ

Node.js は、サーバー上で JavaScript を実行できる Chrome V8 エンジンに基づくプログラミング言語です。モジュールとパッケージを使用して、プログラムを簡単に編成し、依存関係を管理できます。このうち、module.exportsexports はモジュール化においてよく使われる概念であり、この記事では Node.js での使い方を紹介します。

module.exports と exports の関係

Node.js では、各ファイルは独立したモジュールです。ファイル内の変数や関数を他のモジュールで使用したい場合は、エクスポートします。変数 module.exportsexports の両方をエクスポートできます。

Node.js では、各モジュールに module オブジェクトがあり、このオブジェクトには exports 属性などのモジュール関連情報が含まれます。 exports エクスポートする変数または関数をこの属性にマウントし、require() 関数を通じて外部からモジュールを参照し、エクスポートされた変数と関数を呼び出します。

デフォルトでは、exportsmodule.exports の参照を指すため、exports および module.exportsモジュールをエクスポートできますが、この 2 つの間のポインティング関係は常に同じであるとは限らないため、場合によっては exports の代わりに module.exports を使用する必要があることに注意してください。

exports と module.exports の比較

exports を使用してオブジェクトをエクスポートする場合、実際には exports に属性を追加し、値を割り当てます。 。例:

// add.js
exports.add = function (a, b) {
  return a + b;
}

上記のコードでは、exports を使用して add() メソッドをエクスポートします。次のコードを実行するのと同じです:

exports.add = function (a, b) {
  return a + b;
}

module.exports = exports; // exports被默认指向module.exports

次に例を見てみましょう:

// math.js
exports.add = function (a, b) {
  return a + b;
};

exports.sub = function (a, b) {
  return a - b;
};

// app.js
const math = require('./math');
console.log(math.add(1, 1)); // 2
console.log(math.sub(1, 1)); // 0

require() を通じて math モジュールを参照します。関数を実行し、そのエクスポートされたメソッドを呼び出すと、結果が正しく出力されます。なぜそれが正しいのでしょうか?

#exports がデフォルトで module.exports を指すことはわかっていますが、exports を新しいオブジェクト に直接指すと、 module .exports の指向関係が変更されました。 Node.js がモジュールをロードすると、実際には exports オブジェクトではなく module.exports オブジェクトが返されるため、 exports を新しいオブジェクトにポイントした後、次に、新しいオブジェクトを module.exports の値として使用します。これが実際のエクスポート操作です。

exports = {
  add: function (a, b) {
    return a + b;
  },
  sub: function (a, b) {
    return a - b;
  },
}

module.exports = exports;

注:

exports の属性を再割り当てするだけでは、その属性と module.exports の間のポインティング関係は変わりません。

例:

// multiply.js
exports = {
  mul: function (a, b) {
    return a * b;
  }
}

// app.js
const multiply = require('./multiply');
console.log(multiply.mul(2, 5)); // TypeError: multiply.mul is not a function

上記のコードでは、

exports は新しいオブジェクトを指しますが、そのプロパティは割り当てられていないため、エクスポートされた値は unknown になります。 なので、呼び出し時に TypeError が発生します。

エクスポートと module.exports の使用シナリオ

ほとんどの場合、

exports を直接使用してモジュールをエクスポートできます。ただし、関数やオブジェクトを exports にマウントするのではなく、モジュールから直接エクスポートする必要がある場合があります。この場合は、module.exports を使用する必要があります。

例:

// foo.js
module.exports = function () {
  console.log('Hello World!')
}

// app.js
const foo = require('./foo');
foo(); // Hello World!

上記のコードでは、関数を

module.exports に直接割り当てると、実際にはその関数がモジュール全体のエクスポート オブジェクトとして使用されます。

概要

exports と module.exports は、Node.js でモジュールをエクスポートするために使用される変数です。これらは、使用中にモジュールの変数または関数を外部使用に公開できます。そのエクスポートはデフォルトで module.exports を指しますが、その関係は常に同じオブジェクトを指すわけではないため、場合によっては、exports の代わりに module.exports を使用する必要があります。モジュールをエクスポートするために、exports と module.exports を使用することを選択する場合は、実際の状況に応じて選択できます。

以上がnodejsエクスポートの使用法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。