我正在尝试构建一个express.js应用程序,我想传递一些数据到我的主要布局。例如,我在每个页面上使用的导航链接列表。我知道如何将数据传递给一个单独的视图--例如:
app.get('/', (req, res) => {
res.render('index', { pageTitle: 'Home' });
}但是,如果我想将数据传递给我的主布局(相对于单独的视图),该怎么办?例如,让我们假设一个链接列表,我把它放在一个标题导航栏中,显示在每个页面上。
如何将这些数据传递到主布局中?
谢谢。
发布于 2020-07-17 12:01:37
一个更好的解决方案不是使用app.locals,而是设置一个在每条路由之前运行的中间件。
app.use((req,res,next) => {
res.locals.navLinks = [
// array data
];
next()
});将在任何HTTP请求之前运行,并在每个路由之前设置navLinks。
这将导致navLinks仅在请求生存期内有效,而不会对app.locals进行轮询。(它将在申请的整个生命周期内持续存在)。
发布于 2020-07-17 09:48:42
在这里,您可以在每个ejs文件中包括页眉和页脚文件
<%- include('<path>/header.ejs') %>
<%- include('<path>/footer.ejs') %>这是用于ejs视图引擎的
app.set("view engine", "ejs");发布于 2020-07-17 09:27:44
你为什么不只是使用全球状态?
const navbarItems = [{ pageTitle: 'Home' }]
app.get('/', (req, res) => {
res.render('index', navbarItems);
}https://stackoverflow.com/questions/62951043
复制相似问题