在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.dustbase.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版本,它只支持旧的灰尘版本&#x3002;