🎉
モジュールを自作し呼び出してみる
概要
モジュールを自作し、呼び出す流れを説明します。
モジュールとは
- require()で呼び出されてプログラムから利用されるプログラム
A module is any file or directory in the node_modules directory that can be loaded by the Node.js require() function.
実践
①モジュール作成
- subtractとZEROというプロパティをもつオブジェクト作成
- オブジェクトをmodule.exportsに代入
test/module.js
module.exports = {
subtract: (a, b) => a - b,
ZERO: 0
};
②モジュール利用側
次に利用する側のスクリプトを作成します。
- require()の引数に、モジュールファイルの相対パスを指定
- モジュールファイルが呼び出され、require()の箇所がmodule.exportsにセットしたオブジェクトで上書きされるイメージ
- 定数modをmodule.exportsにセットしたオブジェクトとして宣言する
- modに代入されたオブジェクトから関数と定数を呼び出す
test/main.js
const mod = require('./module');
console.log(mod.subtract(2, 1));
console.log(mod.ZERO);
③実行する
nodeコマンドの引数にmain.jsファイルを指定し実行します
ターミナル
$ node ./test/main.js
1
0
補足
require()に渡す引数の拡張子
require()の引数に渡すモジュールファイル名の拡張子がjsの場合は省略し、js以外の場合は拡張子を明記しましょう。
理由としては拡張子以外同名のファイルが存在している場合に、拡張子を省略するとjsの方が優先されてしまうためです。
require()に渡す引数のパス
- 自作モジュールの場合は必ず先頭に./か../を付ける
- モジュールが同じ階層にあるからといって、./を省略してしまうとコアモジュールの方を探しに行ってしまう
- コアモジュールやnode_modulesディレクトリ配下のモジュールの場合はファイル名だけ
./か../を付けない場合の検索先優先度
- Node.jsのコアモジュール
- node_modulesディレクトリ
./か../を付けた場合の検索先
呼び出し側のスクリプトからの相対パス箇所
参考
Discussion