gpt4 book ai didi

node.js - 如何将 app.js 中的公共(public)变量渲染到 express 中的所有路由

转载 作者:搜寻专家 更新时间:2023-10-31 22:39:14 25 4
gpt4 key购买 nike

在我的 Node.js 应用程序中,一些渲染或每条路线的变量是常见的。大约有 4-5 个变量在每条路线上渲染。我有大约 20 条路线。

目前,我正在 res.render

中的每条 route 传递这些变量

有没有一种方法可以将这些公共(public)变量传递到每个路由都在使用的某个地方“(eg:app.js)”,这样我就可以稍微清理一下我的代码。

我使用 express.js 作为 Node ,使用 handlebars 作为模板。

编辑:我想我应该多解释一下

res.render('abc', {
commonitem1: 'one',
commonitem2: 'two',
...
});

-------------------------------------
another route
res.render('xyz', {
commonitem1: 'one',
commonitem2: 'two',
...
});

我想避免在我的每条 route 重复这种情况,并希望从一个共同的地方呈现它。

最佳答案

对于 session 或请求相关值,您可以将这些公共(public)值存储在全局变量中,然后直接在 res.render 中使用它们。为此,您有以下选择

  • 使用 app.use 来存储值:

在你的 app.js 中添加一个中间件来为你做这件事。请记住在您定义的任何其他路由之前编写此中间件,因为中间件功能是按顺序执行的。

app.use(function(req, res, next){
res.locals.items = "Value";
next();
});
//your routes follow
app.use(‘/’, home);

在您的 route ,您可以将 items 直接放在 res.render 中,例如:

res.render('layout', {title: 'My awesome title',view: 'home', item :res.locals.items });
  • 使用 express-session 存储值:

如果你安装了 express-session,你可以在 req.session.item 中保存一些数据,并将它们放在任何路径中,例如:

res.render('layout', {title: 'My awesome title',view: 'home', item :req.session.items });

关于node.js - 如何将 app.js 中的公共(public)变量渲染到 express 中的所有路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29026650/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com