dust.js 中的未编译部分

Uncompiled partials in dust.js

我正在尝试弄清楚如何在 dust 视图中包含未编译的 dust 部分。

main.dust:

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

</div>

toolbar.dust:

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

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

我在这里 post 找到了这个: 它可以让我加载文件,但它们包含的任何{variables} 都不会被替换。

我不想每次更改视图时都必须编译它们。如何包含替换了变量的未编译模板?

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

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

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

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

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.