2016-05-16 13 views
0

私は、主にデスクトップブラウザを目指している私のアプリでハンドルバーのテンプレートエンジンを使用しています。プリコンパイルされたハンドルバーテンプレートはファイルサイズを2倍にします

現在、すべてのテンプレートをHTMLで配布し、ブラウザでコンパイルします。テンプレートにプリコンパイルを適用してアプリケーションを高速化したいと思っていましたが、思ったように機能しませんでした。

私は私のテンプレートをプリコンパイルし、最小限に抑えるために、このようなコマンドを実行します。

handlebars -m example.handlebars -f example.js

その後、私はexample.jsファイルサイズがを倍増持っています!

テンプレートをコンパイルせずにブラウザの消費を削減し、ハンドルバーのランタイムパッケージはずっと小さくなっています。しかし、私のテンプレートのファイルサイズは、私が持っているものよりも多くの費用がかかります。

私はテンプレートをプリコンパイルするときに何か問題があったのですか?
または、テンプレートのプリコンパイルの意味を誤解しましたか?

テンプレートをプリコンパイルするときに、このような表現するので、常に、サイズはオーバーヘッドがあるでしょう

答えて

2

<div>{{values.abc}}</div> 

のようなものにコンパイルされます:

function program(data) { 
    return '<div>' + program2(data) + '</div>'; 
} 
function program2(data) { 
    return data.values ? data.values.abc ? data.values.abc : '' : ''; 
} 

しかし、ここではサイズがあってはなりません大きな懸念それが必要な場合は、一度にすべてをクライアントに送信するのではなく、動的にテンプレートをロードすることを検討する必要があります。

+1

「いくらか」ですがサイズを減らすために、私はプリコンパイルの前にハンドルバーのHTMLを縮小しています。 しかし、プリコンパイルのためにファイルサイズが増加するのを避けてください。クライアント側のコンパイルよりも大幅に改善されています。 –

+1

@SebastienDaniel HTMLのマイナー化は、ほとんどの場合、すべてがgzipされて送信されるためあまり効果がありません。 JavaScriptの縮小(uglifying)はスペースのほかにコードの構造を変更できるので少し助けになるかもしれませんが、改行は削除できます。 – andlrc

+0

しかし、動的にテンプレートを読み込んでも、「拡張ファイルサイズ」の問題を解決することはできません。ファイルサイズが大きいほどネットワーク転送に時間がかかるので、そうする価値はあるのかどうかは疑問です。私は、クロムの速度をコンパイルするテンプレートをテストし、それは非常に高速でした。 – AmBeta

関連する問題