任何想法,我想添加一个快速中间件来检查cookie (theme=dark),如果存在添加类…知道中间件在一个单独的文件中。我知道如何创建中间件,但如何在中间件和ejs视图之间进行通信?
视图将在几个地方查找数据。一个这样的地方是res.locals
(见这里的文档)。因此,由于每个中间件都传递res
对象,您可以在中间件中设置res.locals
中的一些数据,这些数据将自动传递给模板。
例如:
app.use((res, req, next) => {
res.locals.appName = "My App";
next();
});
然后,您的模板可以引用appName
变量:
<%=appName%>
否则,您可以通过在res
或req
对象上创建自己的属性将数据从中间件传递到呈现模板的实际路由,并且路由处理程序可以从那里获取数据并将其作为res.render(templateName, dataObj)
的数据参数传递。