Node.js:EJS 2 级包含参数

Node.js: EJS 2-level include with parameter

在服务器端使用带有 EJS 的 MEAN 环境,我定义了很多 partials/templates,其中之一是我的 header 部分。

//First include level (L1)    
<% include ../partials/header %>

在这个 header 部分中,我还想包括几个区域,例如。 G。登录或 user-specific 菜单,取决于用户是否登录。

//Second include level (L2)
//Inside header.ejs
<% if (req.user) { %> //---> req.user undefined
   <% include ../partials/login %>
<% } else { %>
   <% include ../partials/usermenu %>
<% } %>

事实上,我无法读取这个级别的任何变量。 req.user 和类似的东西都无法访问。获取该信息或可能将参数传递给 header.ejs?

的任何替代方法

我刚刚找到了另一种方法(也是 EJS - pass variable when include 的解决方案)。可能对其他人派上用场。这不是我最喜欢的解决方案,因为我希望找到一种从内部访问变量的本机方法,而不必先传递它们,所以我认为这是一种解决方法,但最终效果很好。

渲染插入第一个包含 (L1) 的页面时,只需确保传入您想要在较低级别处理的数据...

app.route('/*')
.get(function(req, res) {
   res.render('pages/foo', { 
      login: req.user
   });
});

...无论您引入多少层包含,它都将是可访问的。