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
は共存できないのでどちらか一方を使います。