免責事項:私は完全な AMD n00b です。
AMD に変換しようとしているプロジェクトがあります。もともと、すべてのコードは 1 つのファイルにありました。機能ユニットを独自のモジュールに分割することはできましたが、それらはすべて同じファイルにありました。それらを AMD モジュールに分割し、オプティマイザを使用してすべてを結合することにしました。親切な寄稿者が既に私のモジュールを UMD に変換しているので、すべてを移行するのは非常に簡単に思えました。
私のメイン ファイル (つまり、私が書いているライブラリ) は次のようになります。
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
define(factory);
} else {
// Browser globals
root.regula = factory();
}
}(this, function () {
define(
[
"utils/MapUtils",
"utils/DOMUtils",
"service/BindingService",
"service/ExceptionService",
"service/ConstraintService",
"service/ValidationService",
"service/GroupService"
],
function (MapUtils, DOMUtils, BindingService, ExceptionService, ConstraintService, ValidationService, GroupService) {
...
...
return {
configure: configure,
bind: bind,
unbind: unbind,
validate: validate,
custom: custom,
compound: compound,
override: override,
Constraint: ConstraintService.Constraint,
Group: GroupService.Group,
DateFormat: DateFormat,
Exception: ExceptionService.Exception
};
}
);
}));
そして、私のディレクトリ構造は次のとおりです。
regula
├── amdtest.html
├── dist
│ └── src
└── src
├── build.js
├── domain
│ └── CompositionGraph.js
├── jquery.regula.js
├── lib
│ ├── closure
│ │ └── compiler.jar
│ ├── require
│ │ ├── require.js
│ │ └── r.js
│ └── rhino
│ └── js.jar
├── parser
│ └── Parser.js
├── regula.js
├── service
│ ├── BindingService.js
│ ├── ConstraintService.js
│ ├── ExceptionService.js
│ ├── GroupService.js
│ └── ValidationService.js
└── utils
├── ArrayUtils.js
├── DOMUtils.js
└── MapUtils.js
私build.js
は:
({
appDir: "../",
baseUrl: "src",
dir: "../dist",
modules: [{
name: "regula"
}]
})
次のように、Rhino と Closure を使用してオプティマイザを実行しています。
java -cp lib/rhino/js.jar:lib/closure/compiler.jar org.mozilla.javascript.tools.shell.Main lib/require/r.js build.js
残念ながら、これは何らかの出力やエラーを生成しません。で参照されているすべての Javascript モジュールregula.js
も AMD モジュールです。私が間違っていることは何か分かりますか?それが役立つ場合は、より多くの情報を投稿できます。前に述べたように、私は AMD に関しては完全な初心者であり、何が関連しているのか完全にはわかりません。