駆け出しのエンジニア日記

プログラミング言語勉強中の奮闘日記

module.exports

module.exports・・・

JavaScript(Node.js)において、
あるファイルに存在する変数や関数を、別のファイルで実行する機能となります。

早速サンプルを書いてみます。

math.jsで宣言した変数をapp.jsで実行してみます。

(※厳密には変数ではなく定数です)

・app.js

const { PI, square } = require('./math');
console.log(PI);
console.log(square(7));
 結果
 // 3.14159
 // 49

・math.js

module.exports.add = (x, y) => x + y;
module.exports.PI = 3.14159;
module.exports.square = x => x * x;
//以下コメントアウトは上記と同じ意味になる
// module.exports = {
// add: add,
// PI: PI,
// square: square
// }

// const math = {
// add: add,
// PI: PI,
// square: square
// };
// module.exports = math;

このように記述ができます。

module.exportsのやり方としては、実行する側のファイルで「require」します。(今回はapp.js)

 const { PI, square } = require('./math');

前回も記述しましたが、Node.jsでは「require」を利用することで、モジュールを読み込むことが可能です。

 

math.jsを確認します。

先ほど「あるファイルに存在する変数や関数を、別のファイルで実行する」とありますが、ここで使用するのが「module.exports」です。

module.exportsはデフォルトで「空のオブジェクト」が入っています。

module.exports = {} なイメージ

※exportsを使うと、指定した値を外部のNode.jsファイルから読み込んで再利用が可能

module.exportsを記述することで、主となるファイルで読み込まれ、出力されます。

また、module.exportsはmodule部分を省力することができます。

const add = (x, y) => x + y;
const PI = 3.14159;
const square = x => x * x;

exports.add = add;
exports.PI = PI;
exports.square = square;

上記で、「require」しても結果は同じになります。

ただし、注意点としてはexports自身を関係ない値にしてしまうとエラーになります。

exports = 'jkvnsdvk'
'jkvnsdvk'.add = add;
'jkvnsdvk'.PI = PI;
'jkvnsdvk'.square = square;
なイメージ

exports には module.exports が自動的に入っています。

そのため、exports自身を変更してしまうと意図したものと違う動作になります。