Node.js – exportsとmodule.exportsで関数を公開する

Node.jsにおいて、定義した関数を別のファイルで使用するには、exportsもしくはmodule.exportsを使います。

1. exports

exportsは複数の関数を公開するときに使います。exportsオブジェクトのプロパティとして関数を登録します。

exports.<プロパティ名> = <関数>
もしくは
module.exports.<プロパティ名> = <関数>

2つの関数をabcedfという名前で公開してみます。

@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');

備考

exportsmodule.exportsは共存できないのでどちらか一方を使います。