node.js - 为什么 mypartial.ejs 没有显示?

标签 node.js express ejs partials

我正在尝试借助 Jonathan Wrexler 所著的《使用 Node.js 进行编程》一书来学习 Node.js。第 10 章非常简要地解释了分部的使用,但我并没有让它发挥作用。

我做了一个nav.ejspartials - 文件夹如下所示:

<ul>
  <li>One</li>
  <li>Two</li>
  <li>Three</li>
</ul>

layout.ejs -书中的示例如下所示:

  <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> - 标签为空。

如果有任何帮助,我将不胜感激。

为了完整起见,这是我的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"); %>渲染你的部分。 <%仅用于脚本编写和控制流,不会产生任何输出,因此您看不到任何添加到页面中的内容。添加-之后<%将导致它输出未转义的值 include ("partials/nav") .

关于node.js - 为什么 mypartial.ejs 没有显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60474736/

相关文章:

node.js - 使用 @std/esm 在 Express Node.js 项目中使用 ES6

node.js - 获取给定一场比赛的所有关联记录

node.js - ng-view 不能在 AngularJS/Express 中使用部分

javascript - Node.js + Express.js |尝试设置 HTTPS 服务器

javascript - 如何在不知道按钮 id/class 或表单 id/class 的情况下提交表单?

javascript - 带分页的 AWS s3 listobjects

javascript - Vert.x 相当于 Node.js 全局对象

typescript - 异步函数未在一个 AWS Lambda 函数中执行(等待),但在另一个函数中执行

javascript - 使用循环的 Node js 和 ejs

javascript - Sails.js:提交表单时 Controller 从未调用