【发布时间】:2020-06-13 21:59:21
【问题描述】:
我正在尝试借助 Jonathan Wrexler 的“使用 node.js 进行编程”一书来学习 node.js。在第 10 章中,对分部的使用进行了非常简要的解释,但我没有让它发挥作用。
我在partials 文件夹中创建了一个nav.ejs,如下所示:
<ul>
<li>One</li>
<li>Two</li>
<li>Three</li>
</ul>
书中的layout.ejs-example 是这样的:
<body>
<header>Header</header>
<nav>
<% include partials/nav %>
</nav>
<%- body %>
<footer>Footer</footer>
</body>
但这给了我一个语法错误:
SyntaxError: Unexpected identifier in C:\node-projects\wandelverhalen\views\layout.ejs while compiling ejs
在 stackoverflow 的帮助下,我将 include 模板更改为:
<% include ("partials/nav"); %>
这解决了错误,但是当我运行它时它没有显示nav。并且页面源显示了一个空的<nav>-tag。
我将不胜感激。
为了完整起见,这是我的 index.js:
"use strict";
const port = 3000;
const express = require("express");
const app = express();
const homeController = require("./controllers/homeController");
const layouts = require("express-ejs-layouts");
app
.set("view engine", "ejs")
.use(
express.urlencoded({
extended: false
})
)
.use(express.json())
.use(layouts)
.use((req, res, next) => {
console.log(`Request made to ${req.url}`);
next();
})
.get("/", homeController.sendReqParam)
.get("/:myname", homeController.sendReqParam)
.listen(port, () => {
console.log(`Server is running on port ${port}`);
});
【问题讨论】:
-
试试
<%= include ("partials/nav"); %> -
这会将 html 呈现为文本。浏览器显示:“
- 一
- 二
- 三
-
感谢您的回复@kaleidawave,我找到了答案。当我用减号 (-) 替换等号 (=) 时,它确实有效。所以它是
<%- include ("partials/nav"); %> -
啊,是的,我的错,在 = 和 - 之间混淆了。查看我的更新答案
标签: node.js express ejs partials