da1*_*bi3 0 javascript jquery node.js handlebars.js
我正在开发一个带有 express 和把手的 NodeJs 应用程序。我想要的是我可以重用一些部分,如页眉和页脚元素。
所以我想,我选择了'base' 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);
Run Code Online (Sandbox Code Playgroud)
这像预期的那样工作。但我想在其中附加一些数据。所以我在模板中创建了内容标签。除此之外,我已将 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>
Run Code Online (Sandbox Code Playgroud)
我想使用该文件,向其附加一些数据。并将该总包附加到内容标签。所以一种模板变成了模板。我怎样才能做到这一点?
如果您要拥有多个部分,您可能应该建立一个像这样的结构
- views
- layouts
layout.hbs //your html boilerplate layout
- partials
header.hbs
footer.hbs
index.hbs
Run Code Online (Sandbox Code Playgroud)
在index.js设置您的默认布局视图引擎。
// View Engine
app.set('views', path.join(__dirname, 'views'));
app.engine('handlebars', expressHandlebars({ defaultLayout: 'layout' }));
app.set('view engine', 'handlebars');
Run Code Online (Sandbox Code Playgroud)
然后在您的layout.hbs文件中,您可以使用部分语法,例如 Daycard.hbs{{> Daycard}}
<!DOCTYPE html>
<html>
<head></head>
<body>
{{> navbar}}
{{{body}}} //which will render the contents of index.hbs
{{> footer}}
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
771 次 |
| 最近记录: |