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



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

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

例如:

app.use((res, req, next) => {
res.locals.appName = "My App";
next();
});
然后,您的模板可以引用appName变量:
<%=appName%>

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