在expressjs中,Dustjs多个模板不起作用

时间:2012-08-16 15:54:43

标签: node.js express dust.js

在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>

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

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)

“home.dust”

{>"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});

};

3 个答案:

答案 0 :(得分:2)

为了解决这个问题,我写道:klei-dust这是一个帮手,就像巩固一样,使用dustjs-linkedin和express 3.x. klei-dust和consolidate之间的主要区别在于,前者不需要相对于app root的部分和基本模板路径,也不需要你指定模板文件扩展名。

您的index.dust可能如下:

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

假设layout.dust位于与index.dust相同的文件夹中。

答案 1 :(得分:1)

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

  

是的,在这种事情的合并中存在一个问题,
  这些发动机不提供   这个机制现在非常笨拙

作者:Express(tjholowaychuk)的作者from google groupes

答案 2 :(得分:0)

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

layout.dust

  <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}

app.js

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

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

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