Node.js 在expressjs中,Dustjs无法使用多个模板

Node.js 在expressjs中,Dustjs无法使用多个模板,node.js,express,dust.js,Node.js,Express,Dust.js,在expressjs中,Dustjs多个模板不工作获取500错误:找不到模板:模板 我的基本灰尘模板如下(template.dust) “家。灰尘” 你不是唯一一个遇到这个问题的人,这个问题让我发疯了!Express的作者解释说,consolidate(在Express中使用灰尘的包)中存在一个问题 是的,对于这类事情,在consolidate中还有一个问题, 这些发动机不提供 这个机制现在相当笨拙 作者:Express(tjholowaychuk)的作者使用dustjs linkedin包和c

在expressjs中,Dustjs多个模板不工作获取500错误:找不到模板:模板

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

“家。灰尘”


你不是唯一一个遇到这个问题的人,这个问题让我发疯了!Express的作者解释说,consolidate(在Express中使用灰尘的包)中存在一个问题

是的,对于这类事情,在consolidate中还有一个问题,
这些发动机不提供
这个机制现在相当笨拙


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

灰尘

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

完整示例:

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

然后,您的
index.dust
可能会如下所示:

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

{我在这里举了一个例子……这也让我抓狂。index.dust应该覆盖base中的内容块。dust:我已经尝试过这个方法,它在Express 3.x中非常有效。现在您可以将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});

};
  <body>
    <h1>{title}</h1>
{+content}
This is the base content.
{/content}
  </body>
{>"views/layout.dust"/}
{<content}
This is loaded from a partial.
{/content}
var dust = require('dustjs-linkedin')
, cons = require('consolidate');

app.engine('dust', cons.dust);
{>layout/}
{<content}
    Body content...
{/content}