在dust.js中未编译的部分

时间:2016-07-27 16:50:47

标签: dust.js

我正在试图找出如何在灰尘视图中包含未编译的灰尘部分。

main.dust:

<div class="container">
    {>"toolbar"/}

</div>

toolbar.dust:

<div class="row">
    toolbar
    {somevariable}
</div>

这会尝试加载已编译的部分名为toolbar.js而不是未编译的toolbar.dust模板?

我在这里发现了这篇文章:How do you include a raw, uncompiled partial in dust.js?这将允许我加载文件,但它们包含的任何{变量}都不会被替换。

我不希望每次更改视图时都要编译视图。如何包含未编译的模板及其变量?

1 个答案:

答案 0 :(得分:1)

您可以向Dust添加onLoad处理程序,告诉它应该如何尝试加载部分内容。默认情况下,Dust希望您预先注册您将尝试使用的所有模板。

更多信息:Loading Templates(听起来您想要加载未编译的模板)

注意:您不应该在生产中真正这样做,因为编译模板比渲染模板要慢得多。如果您使用的是Express,请花些时间设置构建步骤或Express插件以便为您编译。 Dust GitHub存储库中的examples目录中有一些示例。

onLoad处理程序可能看起来像这样(假设您在服务器上运行Dust - 客户端的想法是相同的):

dust.onLoad = function(templateName, callback) {
  fs.readFile(templateName + '.dust', { encoding: 'utf8' }, function(err, data) {
    callback(null, data);
  });
};

请注意callback使用Node errback签名,因此您可以将此代码简化为:

dust.onLoad = function(templateName, callback) {
  fs.readFile(templateName + '.dust', { encoding: 'utf8' }, callback);
};

example on our GitHub repo that does basically this