RingoJS は次のようなことができます。
Ringo は、CommonJS モジュール仕様を実装しています。つまり、これは次のことを意味します。
すべての JavaScript ファイルは、独自のトップレベル スコープ内にあるモジュールとして扱われます。
モジュールの exports オブジェクトにアタッチされたすべての関数またはプロパティが公開されます。
require() 関数は、モジュールの exports オブジェクトを返します。
指定された識別子文字列が ./ または ../ で始まる場合、Ringo のモジュール ローダーはファイルを検索してロードしようとします。したがって、require('./foo') は、ファイル ./foo.js をモジュールとしてロードするよう Ringo にアドバイスします。
それ以外の場合、Ringo はモジュール パスのすべてのフォルダーでモジュールを探します。
モジュール パスは、Ringo がモジュールを検索する標準的な場所のリストです。
モジュール パスは、次の方法で設定できます。
RINGO_MODULE_PATH 環境変数の設定。
ringo.modulepath Java システム プロパティの設定。
-m または --modules オプションを ringo コマンドライン ツールに使用します。
JsgiServlet で module-path サーブレット init パラメータを使用する。
Ringo 内から require.paths 配列のようなプロパティに要素を追加または削除します。
パッケージは、複数のモジュールやその他のリソースを 1 つのユニットにまとめる手段を提供します。パッケージは、package.json パッケージ記述子ファイルを含むディレクトリです。package.json 記述子のメイン プロパティは、モジュールのメイン エントリ ポイントとして Ringo のモジュール ローダーによって認識されます。
{
"main": "lib/main.js"
}
モジュール ID がパッケージ ディレクトリに直接解決され、package.json がメイン プロパティを定義する場合、Ringo は指定されたリソースを読み込もうとします。メイン プロパティの値は、パッケージ ルートからの相対パスである必要があります。
モジュール ID が package.json ファイルを含まないディレクトリに解決される場合、または package.json がメイン プロパティを定義しない場合、Ringo はそのディレクトリにファイル index.js を読み込もうとします。
モジュール ID の一部がパッケージ ディレクトリに解決される場合、Ringo は ID の残りの部分をそのパッケージの lib ディレクトリに対して解決しようとします。lib ディレクトリの場所は、package.json の directory.lib プロパティを使用してオーバーライドできます。
{
"directories": {
"lib": "new-lib"
}
}
CommonJS モジュールの仕様は、意図的に小さく保たれています。Ringo は、エクスポートおよびインポートするためのいくつかの特別な機能を提供します。これらを使用することの欠点は、コードが Ringo に結び付けられていることですが、コードを「純粋な」CommonJS に変換するのは比較的簡単で、そのためのコマンド ライン ツールもあります。
1 つの Ringo 拡張機能は include 関数です。これは require に似ていますが、他のモジュールの exports オブジェクトを全体として返す代わりに、その各プロパティを呼び出しモジュールのスコープに直接コピーし、ローカルで定義されているかのように使用できるようにします。
include は、タイピングの経済性が最優先されるシェル作業やクイック スクリプトに最適であり、それが目的です。プログラムで使用されるトップレベル関数の起源を隠すため、大規模で長期間存続するプログラムに使用することは、通常は良い考えではありません。
この目的のためには、require を JavaScript 1.8 破壊割り当てと組み合わせて使用し、ローカル スコープ内の別のモジュールから選択したプロパティを明示的に含めることをお勧めします。
var {foo, bar} = require("some/module");
上記のステートメントは、「some/module」によってエクスポートされた API の「foo」および「bar」プロパティを呼び出しスコープに直接インポートします。
Ringo を使用してコマンド ライン スクリプトを作成するのは簡単です。すべての任意の JavaScript ファイルを [script-file] 引数として ringo コマンドに渡すことができます。
ringo [script-file] [script-arg1] [script-arg2] ...
Ringo はスクリプト ファイルをロードし、システム モジュールの args 配列を介して引数を提供します。args 配列の最初の要素は、スクリプト ファイルの名前です。
参考文献