1

我不知道如何将dustjs-linkedin 模板用于express 3.x

 #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 错误:找不到模块“灰尘”

4

3 回答 3

5

我和你有同样的问题。为了方便使用dustjs-linkedin 和express 3.xi 将小库klei-dust放在一起。该库易于设置,您可以设置视图的根文件夹,这适用于基本模板和部分。

因此,如果您在views/withhome.dustbase.dusttemplates 有一个 views 文件夹,则home.dust可以如下所示:

{>base/}
{<main}
Hello world
{/main}

所以没有必要写views/base.dust它来工作。

于 2012-09-24T19:33:39.490 回答
3

我已经设法获得了带有合并模块的dustjs-linkedin 的工作版本。

https://github.com/chovy/express-template-demo

仅供参考,布局必须双引号......这对我来说是一个主要问题,它相对于 app.js 文件,它需要一个尾随 /

{+"views/base.dust"/}
<p>Page content here</p>
于 2012-09-23T21:04:27.303 回答
0

我将向您解释如何将 express 3.x 与dustjs-linkedin 一起使用。

1) express 有 2 个配置要设置。“查看引擎”和 app.engine

“查看引擎”只是设置默认值,而 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

另一种选择是使用 consolidate (http://spalatnik.com/blog/?p=54),但不幸的是,Consolidate 不支持dustjs-linkedin 版本,它只支持旧的dust 版本。

于 2012-09-19T15:16:32.010 回答