编制和客户端上渲染复杂的Dust.js模板(compiling and rendering comp

2019-10-22 09:29发布

我试图编译和渲染上从客户端嵌套泛音飞一次沙尘模板,但我不断收到“错误:模板未找到:[的templatePath]”。 下面的例子中,如果工作我使用不引用任何谐音(如/templates/includes/childTemplate.dust)一个子模板,但不能从一个更高级别的主模板(如/templates/main.dust)。 有没有办法与包括孩子的谐音预编译高水平的模板?

var model = { ... };

$.get('/templates/main.dust', function(tpl) {
    var compiled = dust.compile(tpl, 'mainTemplate');

    dust.loadSource(compiled);
    dust.render('mainTemplate', model, function(err, output) {
        if (err) {
            console.log(err);
        }

        $('#target').html(output);
    });
});

Answer 1:

灰尘的谐音是在渲染时,不编译时间解决,所以没有办法预编译成一个主模板。

相反,尘为你告诉它如何通过使用来加载其他模板的方式dust.onLoad功能。

dust.onLoad = function(templateName, callback) {
  // naive jQuery loading of a new template
  $.get('/templates/' + templateName + '.dust', function(data) {
    callback(null, data);
  });
};

如果您需要在收到后它来编译模板,将它作为第二个参数为callback和灰尘会编译它。 如果您正在加载预编译模板,只是通过调用评估预编译模板dust.loadSource(data) ,然后调用callback()

你可能会希望在模板预编译步骤,您的工作流程,以烤,也许使用dustc是已经被包含尘编译器,这样你就不必编译在客户端上(它的速度慢,而且你必须包括dust-full.js代替dust-core.js )。

你可能会考虑装载灰尘和模板作为AMD模块。 见http://www.dustjs.com/guides/setup/#amd 。 如果你做到这一点灰尘会的电缆铺设工作onLoad通过使用自动为您require

尘土回购有,你可以在浏览器中处理粉尘不同方式的一些基本的例子。 见例子/基本的浏览器和实例/ AMD 。



文章来源: compiling and rendering complex Dust.js templates on the client