4

免責事項:私は完全な 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 に関しては完全な初心者であり、何が関連しているのか完全にはわかりません。

4

1 に答える 1

2

オプティマイザ モードで-o実行するフラグを渡すのを忘れていました! r.js詳しくは公式ドキュメントで

于 2013-03-29T15:27:10.520 に答える