在node.js和express3.x中使用dustjs-linkedin模板
我无法弄清楚如何使用expressj 3.j的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错误:无法find模块'灰尘'
我和你有同样的问题。 为了方便使用dustjs-linkedin和express 3.xi把小库klei-dust放在一起。 该库很容易设置,您可以设置视图的根文件夹,这适用于基本模板和部分。
因此,如果您在views/
home.dust
和base.dust
模板中使用了views文件夹,则home.dust
可能如下所示:
{>base/} {<main} Hello world {/main}
所以没有必要写views/base.dust
来运行。
我设法通过合并模块获得了dustjs-linkedin的工作版本。
https://github.com/chovy/express-template-demo
仅供参考,布局必须双引号…这是我的一个主要陷阱,它相对于app.js文件,它需要一个尾随/
{+"views/base.dust"/} <p>Page content here</p>
我将解释你如何使用expressj 3.x与dustjs-linkedin。
1)表示有2个configuration设置。 '查看引擎'和app.engine
“视图引擎”只是设置默认值,而app.engine只是映射给定文件扩展名使用的引擎。
所以你应该这样做:
app.set('view engine', 'dustjs-linkedin'); app.set('views', __dirname + '/views'); app.engine('dust', dust.compileFromPath);
这只有一个问题,那就是compileFromPath方法不存在于dust:p中。
您应该使用Express预期的这个签名在尘埃对象中添加一个方法:(path,选项,callback)
你可以阅读更多关于这里: http : //expressjs.com/api.html#app.engine 。
另一个select是使用合并(http://spalatnik.com/blog/?p=54),但不幸的是,Consolidate不支持dustjs-linkedin版本,它只支持旧的灰尘版本。