gpt4 book ai didi

node.js - 如何使用Node+Express渲染多个 View

转载 作者:行者123 更新时间:2023-12-02 15:22:20 26 4
gpt4 key购买 nike

我有一个 header.html 和一个 footer.html,我希望将其与其他 View 一起呈现。我想使用 Node+Express 来完成这个任务。我尝试通过以下方式渲染 View ,但显然它不起作用:

var express = require('express');
var app = express();
app.get('/', function(req, res) {
res.render('header');
res.render('home');
res.render('footer');
});

最佳答案

您必须为您的项目设置一个模板引擎。您可以使用Swig例如,它工作得非常好并且有很好的文档记录。

下面的示例向您展示了如何设置它以及如何从布局或母版页调用部分 View 。

通过在项目根目录上执行 npm install swig --save 来安装它。您需要安装一个名为 consolidate 的附加库,它充当不同模板引擎库之间的接口(interface),它是 Express 应用程序中的标准。

npm install consolidate --save

在主脚本中需要该库

consolidate = require('consolidate');
swig = require('swig');

配置如下:

app.engine('html', cons.swig);
app.set('view engine', 'html');
app.set('views', __dirname + '/views'); // set your view path correctly here

然后您可以将页面呈现为:

app.get('/', function (req, res) {
res.render('index', {});
});

( Example taken from Swig's author, Paul Armstrong github page )布局.html:

<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title>{% block title %}{% endblock %} - Example</title>
</head>
<body>
<header>
<h1>{% block title %}{% endblock %}</h1>
{% block header %}{% endblock %}
<nav>
<ul>
<li><a href="/">Home Page</a></li>
<li><a href="/people">People</a></li>
</ul>
</nav>
</header>

<section role="main">
{% block body %}{% endblock %}
</section>

</body>
</html>

索引.html:

{% extends 'layout.html' %}

{% block title %}Home Page{% endblock %}

这样,您就可以根据需要解耦您的 View :)

关于node.js - 如何使用Node+Express渲染多个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28266446/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com