Node.jsにおいて、定義した関数を別のファイルで使用するには、exportsもしくはmodule.exportsを使います。
1. exports
exportsは複数の関数を公開するときに使います。exportsオブジェクトのプロパティとして関数を登録します。
exports.<プロパティ名> = <関数> もしくは module.exports.<プロパティ名> = <関数>
例
2つの関数をabcとedfという名前で公開してみます。
@test.js
exports.abc = function(s) {
console.log(s);
}
var edf = function(s) {
console.log(s);
}
exports.edf = edf;
使い方
requireでファイルを読み出すとexportsオブジェクトが返るので、定義したプロパティ名で関数にアクセスします。
@app.js
var test = require('./test');
test.a('hello');
test.b('world');
2. module.exports
module.exportsは単一のモジュールを公開するときに使います。プロパティは使わずにmodule.exportsへダイレクトに代入します。
module.exports = <関数>
例
abc関数モジュールを公開してみます。
@test.js
var abc = function(s) {
console.log(s);
}
module.exports = abc;
使い方
requireでファイルを読み出すと、abc関数モジュールがダイレクトに返るので、そのまま引数を渡して関数にアクセスできます。
@app.js
var test = require('./test');
test('hello');
備考
exportsとmodule.exportsは共存できないのでどちらか一方を使います。