2

これは実際には Mustache.js または Handlebars.js 固有の質問ではありませんが、Web アプリのテンプレートをロードするパフォーマンスを最適化しようとしている場合、両方のフレームワークでこの問題が発生します。

現在、アプリの他の部分と同じドメインからテンプレートをロードしていますが、可能であれば CDN からテンプレートをロードしたいと考えています。これに関する最大の問題は、AJAX 経由でテキスト ファイルを読み込めない、クロス ブラウザができないことです。

個々のテンプレートのクロスドメインの読み込み時間を最適化するために、他にどのような方法を試すことができますか?

読み込み順序の最適化に取り組んできました( work )

テンプレートをヘッドに xdomain スクリプト ファイルとしてロードする(失敗)

<script type='text/html' src="http://domain.cdn.com"></script>

COR のサポートはブラウザーの数に制限されると思います。

YQL を使用すると遅くなります。

XMLXHTML、またはHTMLを使用して、明らかに JavaScript コールバックなしで、JSONP が行うことをどうにかして行うことはできますか? テンプレートの最後に小さなコールバック関数があるかもしれませんが、すべてをラップしたくないので、json としてエスケープする必要があります。

4

2 に答える 2

3

私の頭の上から1つのアイデア。

RequireJS を使用して、テンプレートを 1 つのファイルにビルドします。各テンプレートは定義モジュールとしてラップされ、テンプレートは文字列として適切にエスケープされます。

ファイルは.js別のドメインから通常どおりロードできるため、

そのため、リソースのリクエストが別のドメインにあるとテキスト プラグインが判断した場合、スクリプト タグを使用してリソースの「.js」バージョンにアクセスしようとします。スクリプト タグの GET 要求はドメイン間で許可されます。リソースの .js バージョンは、モジュール値の文字列を返す define() 呼び出しを含むスクリプトである必要があります。

例: リソースが「text!example.html」で、それが別の Web ドメインのパスに解決される場合、テキスト プラグインは「example.html.js」のスクリプト タグの読み込みを行います。

https://github.com/requirejs/text#xhr-restrictions

Mustache/Handlebars テンプレートもコンパイルすると、さらにパフォーマンスが向上します。以下は、define call でラップされたコンパイル済みの Handlebars テンプレートの例です。Handlebars コンパイラが出力を処理し、RequireJS ビルダーがそれらすべてを 1 つのファイルに含めます。

繰り返しますが、この解決策は試していませんが、正しい方向に進む可能性があります。

于 2013-01-31T17:08:27.760 に答える