首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ExpressJS中处理全局数据

如何在ExpressJS中处理全局数据
EN

Stack Overflow用户
提问于 2020-07-17 09:22:36
回答 5查看 503关注 0票数 2

我正在尝试构建一个express.js应用程序,我想传递一些数据到我的主要布局。例如,我在每个页面上使用的导航链接列表。我知道如何将数据传递给一个单独的视图--例如:

代码语言:javascript
复制
app.get('/', (req, res) => {
 res.render('index', { pageTitle: 'Home' });
}

但是,如果我想将数据传递给我的主布局(相对于单独的视图),该怎么办?例如,让我们假设一个链接列表,我把它放在一个标题导航栏中,显示在每个页面上。

如何将这些数据传递到主布局中?

谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2020-07-17 12:01:37

一个更好的解决方案不是使用app.locals,而是设置一个在每条路由之前运行的中间件。

代码语言:javascript
复制
app.use((req,res,next) => {
  res.locals.navLinks = [ 
    // array data
  ];
  next()
});

将在任何HTTP请求之前运行,并在每个路由之前设置navLinks。

这将导致navLinks仅在请求生存期内有效,而不会对app.locals进行轮询。(它将在申请的整个生命周期内持续存在)。

票数 1
EN

Stack Overflow用户

发布于 2020-07-17 09:48:42

在这里,您可以在每个ejs文件中包括页眉和页脚文件

代码语言:javascript
复制
<%- include('<path>/header.ejs') %>
<%- include('<path>/footer.ejs') %>

这是用于ejs视图引擎的

代码语言:javascript
复制
app.set("view engine", "ejs");
票数 1
EN

Stack Overflow用户

发布于 2020-07-17 09:27:44

你为什么不只是使用全球状态?

代码语言:javascript
复制
const navbarItems = [{ pageTitle: 'Home' }]

app.get('/', (req, res) => {
 res.render('index', navbarItems);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62951043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档