什么是dustjs默认的动态部分路径?

时间:2015-03-04 17:12:56

标签: dust.js

我尝试使用下面的渲染方法渲染模板

adaro.render('name', mailData, function(error, output){
    if(error){
        console.log('load template error', error);
        reject(error);  
    } else {
        console.log('OUTPUT:', output);
        resolve(output);
    }       
});

这是模板文件:

{>"layouts/message"/}

{<title}
Welcome
{/title}

然而,我一直在说错误

[Error: Template Not Found: layouts/message]

那是因为我不知道尘埃的根路径是什么。

在expressJS中,我可以像下面那样设置视图路径

app.set('views', "/path/to/views/folder");

但我计划通过API本身而不是通过res.render呈现它。

所以我的问题是如何设置dust.render的根路径,使得partial会引用如下的根路径。

{>"layouts/message"/}

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

Dust没有文件系统的概念,因为Dust是故意与文件系统无关的。相反,您需要告诉Dust它应该如何处理尚未在其缓存中的模板的请求。

原因是Dust被设计为在服务器和浏览器中运行,因此例如,为本机文件系统提供支持是没有用的。

要告诉Dust如何加载新模板,您需要提供onLoad功能。每当您尝试包含不在Dust缓存中的新模板时,Dust都会将此函数调用为dust.onLoad(templateName, callback)

如果您使用consolidate.js之类的内容,则会为Dust添加一个简单的onLoad实现。这是巩固的:

engine.onLoad = function(path, callback){
  if ('' == extname(path)) path += '.' + ext;
  if ('/' !== path[0]) path = views + '/' + path;
  read(path, options, callback);
};