Requirejs-commonjs
RequireJS-CommonJS
モジュール形式はCommonJSによって定義されます。 ブラウザの同等のオプションを他のJavaScript環境に提供せずに定義されます。 したがって、CommonJS仕様では、http://wiki.commonjs.org/wiki/Modules/Transport [トランスポート形式]およびhttp://wiki.commonjs.org/wiki/Modules/Async/A [非同期要求]を推奨しています。 RequireJSで動作するように、従来のCommonJSモジュール形式を簡単に変換できます。 ただし、すべてのモジュールが新しい形式に変換されるわけではありません。 例外のいくつかは以下にリストされています-
- require呼び出しを行うための条件コードを備えたモジュール。
- 循環依存関係のあるモジュール。
手動変換
CommonJSモジュールは、次の構文を使用してRequireJS形式に手動で変換できます-
define(function(require, exports, module) {
//place CommonJS module content here
});
変換ツール
CommonJSモジュールは、_r.js_ファイルに組み込まれているhttps://github.com/requirejs/r.js[r.jsプロジェクト]コンバーターツールを使用して、RequireJS形式に変換できます。 以下に示すように、変換するファイルのパスと出力フォルダーを指定する必要があります-
node r.js -convert path/to/commonjs/modules/path/to/output
エクスポートされた値の設定
CommonJSの一部のシステムでは、エクスポートされた値を_module.exports_として割り当てることでエクスポートされた値を設定できますが、RequireJSは、定義に渡された関数から値を返す簡単な方法をサポートします。 これの利点は、エクスポートとモジュール関数の引数を必要としないため、以下に示すようにモジュール定義から除外することができます-
define(function (require) {
var name = require('name');
//Define the module as exporting a function
return function () {
name.doSomething();
};
});
代替構文
依存関係を指定する別の方法は、依存関係配列引数_define()_を使用することです。 しかし、依存関係配列内の名前の順序は、以下に示すように、定義関数_define()_に渡される引数の順序と一致する必要があります-
define(['name'], function (name) {
return function () {
name.doSomething();
};
});
CommonJSパッケージからモジュールをロードする
RequireJS構成を設定することにより、RequireJSを使用してCommonJSパッケージに場所とパッケージの属性を知るためのモジュールがロードされます。
最適化ツール
RequireJSには最適化ツールがあり、モジュール定義を組み合わせてブラウザー配信用の最適化されたバンドルにすることができます。 コード展開の一部として使用できるように、コマンドラインツールとして動作します。