如何将数据从 expessjs 中间件传递到视图,

How to pass data from expessjs middleware to a view ,

任何想法,我想添加一个快速中间件来检查 cookie ( theme=dark ),如果存在则添加 class …知道中间件在一个单独的文件中。 我知道如何创建中间件,但如何在中间件和 ejs 视图之间进行通信?

视图将在几个地方查找数据。一个这样的地方是 res.locals(参见文档 here)。因此,由于每个中间件都传递了 res 对象,您可以在中间件的 res.locals 中设置一些数据,这些数据将自动传递给模板。

例如:

app.use((res, req, next) => {
    res.locals.appName = "My App";
    next();
});

然后,您的模板可以引用 appName 变量:

<%=appName%>

否则,您可以通过在 resreq 对象和路由处理程序上创建自己的 属性 将数据从中间件传递到呈现模板的实际路由可以从那里获取数据并将其作为 res.render(templateName, dataObj).

的数据参数传递