3

特にrequire.jsとhbs.js(require-handlebars-plugin)を使用するプロジェクトがあります。私の開発環境ではすべて正常に動作していますが、r.js (requirejs 最適化) を使用してプロジェクトを最適化した後、問題が発生しました。

あれは; hbs.js は 1 つのロケールのみをプリコンパイルするため、i18n ロジック全体が壊れているため、ロケールを変更することはできなくなりました。どうにかしてロケールごとに最適化プロセスを実行する必要があるのではないかと思いますが、その方法がわかりません。誰かがこの問題の解決策を共有できれば本当にうれしいです

ありがとう!

4

1 に答える 1

1

わかりました、これが私がそれを解決した方法です:

最初に、言語ごとに 1 つの require.js ブートストラップ ファイルを作成しました。次に、maven pom.xml を変更して、ロケールごとに 1 つずつ、JavaScript の最適化を 2 回実行しました。ロケールごとに 1 つずつ、2 つの実行要素で requirejs-maven-plugin を使用しました。各要素には、それぞれの r.js ビルド ファイルを指す configFile 値があります。(言語ごとに 1 つ)。ロケールのビルド ファイルは、その言語のブートストラップ ファイルを指します。

最適化を実行すると、各ロケールの醜い js ファイルが作成されます。しかし、最終的な war ファイルにはこれらのどれも含まれていない可能性があります。醜いファイルを r.js build_out フォルダーから war にコピーする必要があります。これを行うには、maven-war-plugin に構成要素を追加しました。warSourceDirectory と webResources を使用して、2 つのロケールをコピーします。また、不要なファイルを削除するために webSourceInclude と webSourceExlude を使用しました。

最後のステップは、サイトをロードするときに正しい require ブー​​トストラップ ファイルをロードすることでした。これを行うには、index.html に javascript スニペットを作成するだけで、最初に (たとえば Cookie から) ロケールを決定し、次にブートストラップ ファイルを動的にロードします。

document.write("<script data-main='bootstrap_" + getLocaleString() + "' src='/js/lib/require.js'><\/script>");

これを理解するのを手伝ってくれたhttps://github.com/SlexAxton/require-handlebars-pluginの作者に感謝します。

于 2013-05-30T20:34:32.567 に答える