我想知道如果那里是一个容易访问的方式Express.js'req或届会变量,来自在一个玉模板没有通过它在通过正常的反应。

或者是这个的唯一方式?

res.render('/', {
    session: req.session
});
有帮助吗?

解决方案

您需要创建一个dynamicHelper供Express使用。 通用标签

然后在模板中,您可以使用<%= session.logged_in %>或其他任何方法。

注意:Express3中不推荐使用dynamicHelpers

其他提示

只需添加 通用标签

之前 通用标签

并开始参加玉器会议 通用标签

在表3中。x,dynamicHelpers已被删除,所以你需要结合使用的中间件和 res.locals.让我们说我们要访问 req.query 在一个 /signup/new 观点:

localQuery = function(req, res, next) {
  res.locals.query = req.query;
  next();
};

newSignup = function(req, res) {
  res.render('signup/new');
};

app.get('signup/new', localQuery, newSignup);

现在的任何途径使用的 localQuery 中间件,将会有 res.locals.query 设置。然后可以将这种访问您认为 query.

只需使用中间件即可。 通用标签

之后,您可以在玉模板中使用“#{req}”来引用它。

假设您在'req'中有一个'user'对象,并且'user'有一个方法'isAnonymous', 如果您的user.isAnonymous()返回true, 通用标签

将呈现为: 通用标签

这对我有用 通用标签

在哈巴狗或翡翠视图用户中 通用标签

虽然javascript中总有一种方法可以逃避范围并向上爬,但我 really 真的 really 真的 really 强烈建议您找到另一种方法。

考虑一下您的要求:我可以让我的视图了解控制器的勇气吗?

或者您真正要问的是:我可以让我的视图知道运行时的勇气吗?

一个视图应该获取数据并将其转换为标记。而已。如果您做其他任何事情,那说明您做错了。我不在乎它有多“容易”。这就是界面的重点。准确定义要传递的内容,并轻松地将另一件事替换为另一件事。

您可以使用渲染功能解决此问题,在该功能中,您可以渲染需要将会话变量作为模板中可访问的局部变量的每个视图(例如,通常在用户登录时)。

这是一个函数示例,但您可以根据需要进行调整: 通用标签

然后可以像这样使用它: 通用标签

在您的Jade模板中,您可以访问会话变量,如下所示: 通用标签

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top