代码之家  ›  专栏  ›  技术社区  ›  mercury

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

  •  0
  • mercury  · 技术社区  · 3 年前

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

    0 回复  |  直到 3 年前
        1
  •  1
  •   jfriend00    3 年前

    视图将在几个地方查找数据。其中一个地方就是 res.locals (见doc here ).所以,既然每个中间件都通过了 res 对象,可以在中设置一些数据 本地人 在中间件中,这将自动传递给模板。

    例如:

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

    然后,您可以参考 appName 变量:

    <%=appName%>
    

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