CommonJS Modules/1.1

Last-modified: 2010-12-15 (水) 23:41:08

概要

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); // 例外が発生