Node.jsのrequireの挙動を調べてみた

1029 ワード

皆が使ってるし~という事で実行しがちなOMAJINAI WORDのrequire。
requireの挙動ってどうなってるんだろうと思ったので、公式ドキュメントやらブログで探してみました。

そもそもrequireとは

requireはもともとcommonJSにある組み込み関数です。
console.log同様、もともと使える関数なので、準備などは不要です!(めちゃ便利)

1. 別のディレクトリにあるjsファイルのモジュールを使いたい時

exports.sum = function(x, y) {
    return x + y;
}

exports.minus = function(x, y) {
    return x - y;
}
const calculation = require('./calculation.js') //ファイル名を指定
console.log(calculation.sum(1, 2));
console.log(calculation.minus(5, 4));

2. npm installしたNPMモジュールを使いたい時

const http = require('http'); //モジュール名を指定

require時の挙動

requireで指定されたJavaScriptファイルを読み込み、そのファイルを実行してexportsオブジェクトを返却します。この「ファイル読み込み・実行・exportsオブジェクトの返却」という流れは最初の一回のみで、その後はキャッシュされるような仕組みになっています。