【发布时间】:2013-08-14 16:40:43
【问题描述】:
我想预编译我的 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));
// ...
});
注意以下关于第二个代码sn-p中的内容:
- RequireJS 模块不再拉入模板。
- Handlebars.compile() 不再使用。
那么,每当模板文件发生文件系统级别的修改时,我通常会运行 Guard 以保持我的模板编译?
基本上我的问题是,开发人员是否打算这样做?
if (development) {
compile templates
}
else {
use precompiled templates
}
我也在使用 Rails,所以也许有一些像 sass-rails 这样的黑魔法。
【问题讨论】:
标签: requirejs handlebars.js client-side-templating