我想预编译我的 Handlebars 模板,但我不确定这在开发模式下是如何工作的。
是否有一些后台进程(如Guard)运行以持续监控 Handlebars 模板文件的更改?
我正在使用 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));
// ...
});
请注意关于第二个代码片段中的以下内容:
- RequireJS 模块不再拉入模板。
- Handlebars.compile() 不再使用。
那么,每当模板文件发生文件系统级别的修改时,我通常会运行 Guard 以保持我的模板编译?
基本上我的问题是,开发人员这样做的意图是什么?
if (development) {
compile templates
}
else {
use precompiled templates
}
我也在使用 Rails,所以也许有一些像 sass-rails 这样的黑魔法。