我在一些地方使用了一个全局标题,我试图在渲染模板时可以传递的变量中定义它的位置。将变量传递给EJS包括
喜欢的东西:
var headerLocation = 'some/location/header.ejs';
res.render(viewDir + '/index', {
header: headerLocation
});
而且在模板文件:
<% include header %>
头是与渲染传递的价值。
这似乎不可能,但也许我错过了一些东西,所以认为我会问这里。
编辑:
这在下面,但总结答案评论中提到,这是目前在EJS的2版本。
在这里看到:https://github.com/mde/ejs#includes 及相关讨论在这里:https://github.com/tj/ejs/issues/93
感谢。在发布这个问题后,我实际上很快遇到了https://github.com/visionmedia/ejs/issues/93。虽然有一个拉的请求,它似乎还没有发布到NPM。希望它会很快被接受和发布。一旦发生这种情况,我会将这个答案标记为正确的,以免误导可能在这里降落的其他人。有趣的是,无论出于何种原因,只有在Windows上,使用节点全局对象才能工作。所以<%include global.somepath%>以某种方式起作用。不过在Mac或Linux上。奇怪的一个。 –
想想用这一行改变bug.push行(在新代码中):buf + =“'+(function(){”+ include +“})()+'”; (可能导致.push出错) – Arthur
我刚试过,在var中存放一个路径并试图用'include'使用var,它仍然尝试使用var名称而不是值。 EJS'1.0.0' – Vadorequest