我无法弄清楚如何使用用于快递3.x的dustjs-linkedin模板
#app.js
var dust = require('dustjs-linkedin');
app.set('view engine', 'dust');
app.get('/test1', routes.test1);
#./routes/test.js
exports.test1 = function(req, res){
res.locals.session = req.session;
res.render('test1', { title: 'Test 1' } );
};
#./views/test1.dust
{+base.dust/}
{<main}
Child Content
{/main}
#./views/base.dust
{+main}
Base Content
{/main}
进入/ test1
时出现以下错误500错误:无法找到模块&#39;尘埃&#39;
答案 0 :(得分:5)
我和你有同样的问题。为了便于使用dustjs-linkedin和express 3.x,我将小型库klei-dust放在一起。该库易于设置,您可以设置视图的根文件夹,这适用于基本模板和部分文件。
因此,如果您在views/
处有home.dust
和base.dust
模板的视图文件夹,则home.dust
可能如下所示:
{>base/}
{<main}
Hello world
{/main}
因此无需编写views/base.dust
即可使用。
答案 1 :(得分:3)
我已经设法通过整合模块获得了一个有效的版本的dustjs-linkedin。
https://github.com/chovy/express-template-demo
仅供参考,布局必须加双引号...这对我来说是一个主要问题,以及它与app.js文件的关系,它需要一个尾随/
{+"views/base.dust"/}
<p>Page content here</p>
答案 2 :(得分:0)
我将解释你应该如何使用express 3.x with dustjs-linkedin。
1)express有2个配置设置。 &#39;查看引擎&#39;和app.engine
&#34;查看引擎&#34;只需设置默认值,app.engine就会映射用于给定文件扩展名的引擎。
所以你应该做这样的事情:
app.set('view engine', 'dustjs-linkedin');
app.set('views', __dirname + '/views');
app.engine('dust', dust.compileFromPath);
这只有一个问题,即compileFromPath方法不存在于尘埃中:p。
你应该使用Express期望的签名在尘埃对象中添加一个方法:(路径,选项,回调)
你可以在这里阅读更多相关信息:http://expressjs.com/api.html#app.engine。
另一种选择是使用合并(http://spalatnik.com/blog/?p=54),但不幸的是,Consolidate不支持dustjs-linkedin版本,它只支持旧的防尘版本。