概要
CommonJSのモジュール機構の仕様を定義する。必要最低限のものしか定義されていない。
この仕様により定義されるもの
require() 関数
- 指定したモジュールを読み込み、戻り値でそのモジュールを返す。
- ファイル名(ファイルパス)から拡張子.jsを省いた文字列を指定する。
- パス区切り文字はスラッシュ(/)。
- 相対パス指定も可能。
- 存在しないモジュールが指定された場合、例外が発生する。
main プロパティ
- メインモジュール(最初に起動されるスクリプト)のmoduleオブジェクトへの参照。
exports オブジェクト
- 実行中モジュールの内部で参照可能。外部モジュールからは参照不可。
- このオブジェクトのプロパティを設定すると外部に公開される。(requireした側から参照できるようになる)
module オブジェクト
- 実行中モジュールの内部で参照可能。外部モジュールからは参照不可。
id プロパティ
- このモジュールを示す文字列。
- この文字列は require(module.id) のようなことができる値となる。
uri プロパティ
- このモジュールの完全URI(ファイルパス)を示す文字列。
- Windowsであれば"file:C:/Users/terurou/Desktop/hoge.js"のような値が取得できる。
- 仕様では「The "module" object may have a "uri"」となっており、実装系によっては未定義の可能性があるので注意が必要。(RingoJSでは実装されている)
動作例
module.js
function addInternal(x, y) { return x + y; }
exports.add = function(x, y) { return addInternal(x, y); }
main.js
var module = require("module"); module.add(1, 2); // 3 module.addInternal(1, 2); // 例外が発生