我尝试使用下面的渲染方法渲染模板
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"/}
非常感谢任何帮助。
答案 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);
};