一個簡單的方法是創建一個基於現有文本RequireJS插件!插入。這將加載和編譯模板。 RequireJs將緩存並重新使用已編譯的模板。
插件代碼:
// hbtemplate.js plugin for requirejs/text.js
// it loads and compiles Handlebars templates
define(['handlebars'],
function (Handlebars) {
var loadResource = function (resourceName, parentRequire, callback, config) {
parentRequire([("text!" + resourceName)],
function (templateContent) {
var template = Handlebars.compile(templateContent);
callback(template);
}
);
};
return {
load: loadResource
};
});
配置在main.js:
require.config({
paths: {
handlebars: 'libs/handlebars/handlebars',
hb: 'libs/require/hbtemplate',
}
});
使用在backbone.marionette觀點:
define(['backbone', 'marionette',
'hb!templates/bronnen/bronnen.filter.html',
'hb!templates/bronnen/bronnen.layout.html'],
function (Backbone, Marionette, FilterTemplate, LayoutTemplate) {
...
如果您在使用大骨幹.Marionette框架你可以用 重寫默認的渲染器,這樣它會繞過t他內置 模板加載器(用於加載/編譯/緩存):
Marionette.Renderer = {
render: function (template, data) {
return template(data);
}
};
謝謝!這似乎工作非常好。我喜歡它如何與r.js整合 – 2012-03-27 11:42:53