将variables传递给EJS包括
我有一个全局标题在几个地方使用,我试图定义它的位置在一个variables,可以在渲染模板时传递。
就像是:
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
此function已被添加:如果它不是path(文件未find),它被评估为variables名称。 https://github.com/visionmedia/ejs/pull/156
这里是一些可以实现dynamic包含的演示代码。
视图
<div flex class="main-container"> <%- include(page) %> </div>
路由器
router.get('/', function (req, res, next) { res.render('pages/index', { page: 'home' }); });
尽pipe它是一个古老的问题,为了别人的回答。
根据github的文档,似乎EJS没有块的概念,只有编译时才包含。 由于其编译时间包括,您需要硬编码的位置。
所以你留下了传递一些标志,如果在标题中检查或parsing标题为HTML并将其传递给所有模板…