4

RequireJS ライブラリを広く使用する大規模なポータル アプリケーションに EmberJS アプリケーションを埋め込もうとしています。プロジェクトのビルドには ember-cli を使用しています。ビルドされたアプリケーションは、2 つのファイルdist/assets/vendor.jsdist/assets/myapp.js. EmberJS アプリケーションは埋め込み後に機能しますが、ポータル アプリの JavaScript が壊れます。

いくつかの調査の結果、問題は、グローバル名前空間の Web サイトの変数と競合するvendor.js独自の変数requirerequirejsrequireModuleおよびを定義することであることがわかりました。defineこのmyapp.jsファイルにはdefine、アプリのモジュールをロードするステートメントが含まれています。

これらの名前を変更したり、別の名前空間に配置したりする方法はありますか?

私が思いついた唯一の解決策は、2 つの.jsファイル内の変数の名前を手動で変更することでした。これは機能しているように見えますが、かなり面倒なので、自動化できればいいと思います。RequireJS オプティマイザーの使用についても知りましたが、vendor.jsファイルで動作させることができません。

手伝って頂けますか?ありがとう!

4

2 に答える 2

4

私は同じ問題を抱えていましたが、よく検索した結果、プロジェクトにember-deequireアドオンを追加することで問題を解決できたと思います。

ember install ember-derequire

これにより、アプリ内のすべての 'require' および 'define' ステートメントが 'eriuqer' および 'enifed' に変更されます。eriuqer と enifed が気に入らない場合は、オプションを使用してマップ先をオーバーライドできます (同じ長さのものを使用する必要があることに注意してください)。

それが役に立たない場合、私が見つけたもう1つの有望なことは、 loader.jsにnoConflict()関数があることですが、loader.noConflict()呼び出しをどこに置くか、またはビルドを生成する場所を見つけることができませんでした代替名を使用してコードを作成しますが、最初のオプションが状況で機能しない場合に役立つ可能性があります。

于 2016-08-22T20:38:08.420 に答える