Node.jsモジュールのエクスポート
Node.js では、各ファイルはモジュールとみなされ、モジュール内の変数と関数はデフォルトでプライベートですが、他のモジュールから呼び出す必要がある変数と関数は、exports または module.exports でエクスポートする必要があります。
imports は module.exports への参照です。つまり、exports = module.exports なので、同じように機能します。エクスポートを使用して、変数、関数、オブジェクトなどを外部モジュールに公開します。
例:
// person.js
var name = 'Tom';
var age = 18;
exports.getName = function() {
return name;
}
exports.getAge = function() {
return age;
}
この例では、2 つの関数 getName と getAge が、exports オブジェクトを通じて外部モジュールに公開されています。他のモジュールは、require メソッドを通じてこのモジュールをインポートし、getName メソッドと getAge メソッドを使用して名前と年齢の値を取得できます。
// main.js
var person = require('./person');
console.log(person.getName()); // 'Tom'
console.log(person.getAge()); // 18
exports を使用してオブジェクトをエクスポートする場合、exports = {} を使用して再割り当てすることはできないことに注意してください。そうしないと、exports と module.exports の間の関連付けが切断され、モジュールを正しくエクスポートできなくなります。正しい方法は、エクスポート オブジェクトにプロパティとメソッドを直接追加することです。
例:
// person.js
exports.obj = {
name: 'Tom',
age: 18
}
exports.sayHello = function() {
console.log('Hello');
}
この例では、オブジェクトと関数が、exports オブジェクトを通じて外部モジュールに公開されます。他のモジュールは、require メソッドを通じてこのモジュールをインポートし、obj オブジェクトと SayHello メソッドを使用して、モジュールによってエクスポートされたコンテンツにアクセスできます。
// main.js
var person = require('./person');
console.log([person.obj.name](<http://person.obj.name/>)); // 'Tom'
console.log(person.obj.age); // 18
person.sayHello(); // 'Hello'
つまり、exports は Node.js の変数、関数、オブジェクトをエクスポートするためのオブジェクトで、モジュール内のプライベート変数や関数を他のモジュールに公開することでモジュール開発を実現します。