1

在 expressjs 中,Dustjs 多个模板不起作用,出现500 错误:找不到模板:模板

我的基本灰尘模板如下(template.dust)

<div class="page">
  {+pageHeader}Hello World!{/pageHeader}
  <div class="bodyContent">
    {+bodyContent/}
  </div>
  <div class="footer">
    {+pageFooter}
       <hr>
       <a href="/contactUs">Contact Us</a>
    {/pageFooter}
  </div>
</div>

我试图在我的 home.dust 中调用这个基本模板我收到如下错误

Express
500 Error: Template Not Found: template
at Object.load (C:\office\nodejs-example\express_example\node_modules\application-name\node_modules\dust\lib\dust.js:54:27)
at Chunk.partial (C:\office\nodejs-example\express_example\node_modules\application-name\node_modules\dust\lib\dust.js:407:15)
at body_0 (undefined:1:130)
at Array.0 (C:\office\nodejs-example\express_example\node_modules\application-name\node_modules\dust\lib\dust.js:34:7)
at EventEmitter._tickCallback (node.js:192:40)

“家.尘”

{>"template"/}
{<pageHeader}
   {?username}
     Welcome {username} <a href="/items">Items</a> | <a href='/logout'> Log Out</a>
      {:else}
         <form method="POST" action="/signin">
            <label>Usename <input type="text" name="username" id="s-user"></label>
            <input type="submit" class="submit" value="Login">
         </form>
      {/username}
{/pageHeader}

路由类方法

exports.home = function(req, res){
    res.render('home', {username :  req.session.username});

};
4

3 回答 3

2

为了解决这个问题,我写了:klei-dust,它是一个帮助器,就像 consolidate 一样,可以将dustjs-linkedin 与 express 3.x 一起使用。klei-dust 和 consolidate.dust 之间的主要区别在于前者不需要相对于应用程序根目录的部分和基本模板路径,也不需要您指定模板文件扩展名。

index.dust可能看起来像:

{>layout/}
{<content}
    Body content...
{/content}

鉴于您有一个layout.dustindex.dust.

于 2012-09-27T11:56:51.363 回答
1

你并不孤单,这个问题让我发疯了!Express 的作者解释说,在 consolidate 中存在一个问题(在 Express 中使用 Dust 的包)。

是的,这类事情在整合中存在一个问题,
这些不提供
这种机制的引擎现在非常笨拙

作者:来自 google群组的 Express(tjholowaychuk) 的作者

于 2012-09-01T21:17:20.650 回答
0

将dustjs-linkedin 包与consolidate 包一起使用(不再维护dustjs 包)。两者都在 npm 上。您可以通过执行以下操作将灰尘模板与布局一起使用:

布局.灰尘

  <body>
    <h1>{title}</h1>
{+content}
This is the base content.
{/content}
  </body>

index.dust(主页部分)

{>"views/layout.dust"/}
{<content}
This is loaded from a partial.
{/content}

应用程序.js

var dust = require('dustjs-linkedin')
, cons = require('consolidate');

app.engine('dust', cons.dust);

完整示例:https ://github.com/chovy/express-template-demo

于 2012-09-24T04:17:47.330 回答