【问题标题】:using dustjs-linkedin templates in node.js and express3.x在 node.js 和 express3.x 中使用dustjs-linkedin 模板
【发布时间】:2012-09-25 03:59:10
【问题描述】:

我不知道如何在 express 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 错误:找不到模块“灰尘”

【问题讨论】:

  • 你必须使用 {>"views/base.dust"/}

标签: node.js express dust.js


【解决方案1】:

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

因此,如果您在 views/ 有一个带有 home.dustbase.dust 模板的视图文件夹,则 home.dust 可能如下所示:

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

因此无需编写views/base.dust 即可使用。

【讨论】:

  • 谢谢!我无法让 consolidate.dust 方法工作,但 klei-dust 工作得很好!
  • @trusktr 很高兴听到这个消息!
【解决方案2】:

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

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

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

{+"views/base.dust"/}
<p>Page content here</p>

【讨论】:

  • 我尝试按照您的方式进行操作,但无法正常工作。 consolidate.dust 似乎没有提供引擎。我在 npmjs.org 上找到了一个模块,它基本上为dustjs-linkedin 提供了一个expressified 包装器:klei-dust。我把kleiDust.dust 放在consolidate.dust 应该在的位置,然后它就完美运行了。例如var kleiDust = require("klei-dust"); this.engine('dust', kleiDust.dust);。我可能还会注意到,我使用的是基于 express 构建的 LocomotiveJS,this 指的是app
  • 哦,这就是另一个答案所说的。 xD
  • 这个答案来自 2012 年。也许从那以后事情就坏了?
【解决方案3】:

我将解释你应该如何使用 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 版本。

【讨论】:

  • 你能提供一个创建dust.complileFromScratch函数的例子吗?整合方法对我不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-06
  • 1970-01-01
  • 2017-03-27
相关资源
最近更新 更多