私はHandlebarsテンプレートをプリコンパイルしたいのですが、これは開発モードでどのように動作するのか分かりません。RequireJSでハンドルバーにプリコンパイルされたテンプレートを使用するには?
Handlebarsテンプレートファイルの変更を常に監視するために、Guardのようなバックグラウンドプロセスを実行するのが一般的ですか?
テンプレートをプルインするためにRequireJSを使用しています。例えば:
define(['jquery', 'handlebars', 'text!templates/my_template'], function($, Handlebars, myTemplate) {
// ...
var data = {"some": "data", "some_more": "data"};
var templateFn = Handlebars.compile(myTemplate);
$('#target').append(templateFn(data));
// ...
});
だから私はテンプレートがプリコンパイルされると、人はこれを行うだろう理解:
define(['jquery', 'handlebars'], function($, Handlebars) {
// ...
var data = {"some": "data", "some_more": "data"};
var template = Handlebars.templates['my_template'];
$('#target').append(template(data));
// ...
});
注2番目のコードスニペットについては、以下:
- をRequireJSモジュールなしテンプレートが長く引っ張られます。
- Handlebars.compile()は使用されなくなりました。
通常、ファイルシステムレベルの変更がテンプレートファイルに発生するたびに、テンプレートをコンパイルするためにGuardを実行しますか?
私の質問は基本的にはですが、開発者がこれを行う意思はありますか?
if (development) {
compile templates
}
else {
use precompiled templates
}
また、私はRailsも使用していますので、おそらくSass-Railsのような黒い魔法があります。
はい!私がこの質問を投稿した後、同僚がrequire-handlebars-pluginと言いました。それは完璧です!それはさらにi18nサポートを持っているので、それはさらに素晴らしい。私はそれを試して、それは広告として動作します。開発モードからプロダクションにコードを変更する必要はなく、ビルドプロセスにフックできるビルドにはr.jsが使用されます。テンプレートは、ビルドされたファイルにインライン展開されます。プロダクションで変更する必要があるのは、require.js + data-main ...を含むスクリプトタグです。これはアセットマネージャが処理できます。 –
最新版では、i18nの機能が削除されました。 – magiccrafter