【问题标题】:Why is mypartial.ejs not showing?为什么 mypartial.ejs 没有显示?
【发布时间】: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。并且页面源显示了一个空的&lt;nav&gt;-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}`);
  });

【问题讨论】:

  • 试试&lt;%= include ("partials/nav"); %&gt;
  • 这会将 html 呈现为文本。浏览器显示:“
  • 感谢您的回复@kaleidawave,我找到了答案。当我用减号 (-) 替换等号 (=) 时,它确实有效。所以它是&lt;%- include ("partials/nav"); %&gt;
  • 啊,是的,我的错,在 = 和 - 之间混淆了。查看我的更新答案

标签: node.js express ejs partials


【解决方案1】:

你想使用&lt;%- include ("partials/nav"); %&gt; 来渲染你的局部。 &lt;% 仅用于脚本和控制流,不产生任何输出,因此您看不到任何添加到页面的内容。在&lt;% 之后添加- 将导致它输出include ("partials/nav") 的未转义值。

【讨论】:

    猜你喜欢
    • 2014-11-30
    • 1970-01-01
    • 2017-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多