javascript - 如何在 ExpressJS 中处理全局数据

标签 javascript node.js express

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

app.get('/', (req, res) => {
 res.render('index', { pageTitle: 'Home' });
}

但是如果我想将数据传递到我的主布局(而不是单个 View )怎么办?例如,假设我将链接列表放入出现在每个页面上的标题导航栏中。

如何将该数据传递到我的主布局中?

谢谢。

最佳答案

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

app.use((req,res,next) => {
  res.locals.navLinks = [ 
    // array data
  ];
  next()
});

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

这将导致 navLinks 仅在请求生命周期内有效,并且不会污染 app.locals。 (这将在应用程序的整个生命周期中持续存在)。

关于javascript - 如何在 ExpressJS 中处理全局数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62951043/

相关文章:

javascript - Object.create() 混淆 - 如何访问/销毁对象?

javascript - 使用变量引用创建 react 状态名称?

node.js - 任何易于扩展的基于 Web 的 node.js 文件管理器?

javascript - 如何在 Nodejs 中访问导出的 "nested"函数 - TypeError : is not a function

javascript - Sequelize 关联和 api 路由。无法从数据库检索信息

javascript - 访问 Node 服务器上的发布数据?

javascript - 停止在 React 应用程序中使用重新订阅的事件源

javascript - AngularJS 无法加载 ng-view inti index.html

javascript - Node.js Ajax 请求

javascript - 如何使用 PHP 和 JQuery AJAX 在 <div> 标签中检索和插入 MySQL 数据?