【问题标题】:Template in template Handlebars模板中的模板 Handlebars
【发布时间】:2018-02-12 03:14:38
【问题描述】:

我正在开发一个带有 express 和把手的 NodeJs 应用程序。我想要的是我可以重用一些部分,如页眉和页脚元素。

所以我想,我选择“基础”html。并通过 Handlebars 在其中拍摄所需的 html 元素。

我的 index.js 中有这个:

const functions = require('firebase-functions');
const express = require('express');
const engines = require('consolidate');

const app = express();
app.engine('hbs', engines.handlebars);
app.set('views', './views');
app.set('view engine', 'hbs');

app.get('/activiteiten', (request, response) => {

    // var test = require('./views/dayCard.hbs');
    // var data = {display_name: "hi"};
    // var theCompiledHtml = test(data);

    response.render('index', {
        menu_item: "Mijn Dashboard",
        menu_sub: "Activiteiten"
        //content: theCompiledHtml

    });
});


exports.app = functions.https.onRequest(app);

这按预期工作。但我想向它附加更多数据。所以我在模板中创建了内容标签。除此之外,我已将 html 添加到 dayCard.hbs。

Daycard.hbs:

<div class="col-xs-12 col-md-6 col-lg-3">
    <div class="card-deck text-center">
        <div class="card box-shadow">
            <div class="card-header">
                <h4 class="my-0 font-weight-normal">{{display_name}}</h4>
            </div>

            <div class="card-body">
            </div>
        </div>
    </div>
</div>

我想使用那个文件,向它附加一些数据。并将该总包附加到内容标签。所以一种模板变成了模板。我怎样才能做到这一点?

【问题讨论】:

    标签: javascript jquery node.js handlebars.js


    【解决方案1】:

    如果你要拥有多个部分,你可能应该建立一个这样的结构

    - views
      - layouts
          layout.hbs //your html boilerplate layout
      - partials
          header.hbs
          footer.hbs
      index.hbs 
    

    index.js 中将您的视图引擎设置为默认布局。

        // View Engine
        app.set('views', path.join(__dirname, 'views'));
        app.engine('handlebars', expressHandlebars({ defaultLayout: 'layout' }));
        app.set('view engine', 'handlebars');
    

    然后在您的 layout.hbs 文件中,您可以使用部分语法,例如对于 Daycard.hbs {{&gt; Daycard}}

       <!DOCTYPE html>
         <html>
         <head></head>
           <body>
             {{> navbar}}
             {{{body}}}  //which will render the contents of index.hbs
             {{> footer}}
           </body>
        </html> 
    

    【讨论】:

      猜你喜欢
      • 2013-10-23
      • 2012-12-02
      • 1970-01-01
      • 2013-12-31
      • 1970-01-01
      • 2017-12-21
      • 2016-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多