我希望能够将 EJS 模板数据包含到局部视图中,并让它在调用局部的所有页面上呈现

问题描述

我正在研究布局和模板。我有一个网站,其中包含“views/partials/header.ejs”和“views/partial/footer.ejs”文件。我的 app.js 文件模板设置如下:

const express = require('express')
const bodyParser = require('body-parser');
const nodemailer = require('nodemailer');
const ejs = require('ejs');
const date = require(__dirname + '/date.js');

const app = express();

app.set('view engine','ejs');

app.use(bodyParser.urlencoded({extended: true}));
app.use(express.static("public"));


app.get('/',function(req,res) {

  const year = date.getYear();

  res.render('home',{copyrightYear: year})
});



app.listen(3000,function() {
  console.log('Server started on port 3000');
});

我需要做的是将 const copyrightYear 传递到部分“页脚”中,而不必输入到每条路线中。欢迎提出任何建议。

提前致谢。

解决方法

您不能这样做,因为当您发出请求时,服务器会获取所需的文件,然后执行其上的逻辑,然后将其发送回浏览器。

所以当你使用这个

app.get('/',function(req,res) {

  const year = date.getYear();

  res.render('home',{copyrightYear: year})
});

服务器将获取包含部分文件的主文件,然后传递数据,然后将其发送到浏览器。

所以你必须为你想要的每个文件单独请求,然后在它上面做逻辑