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
});
});
...无论您引入多少层包含,它都将是可访问的。
在服务器端使用带有 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
});
});
...无论您引入多少层包含,它都将是可访问的。