我试图使用EJS动态地包含我的部分内容。我渲染一个这样的模板:
路由器
router.get('/', noteController.getNotes, (req, res, next) => {
return res.render(template, {'page':'all'})
})
我试图在此模板中包含部分内容,基于变量" page"。
template.ejs
<% include %><%= page %><% .ejs %>
然而,这不起作用。我尝试了多种方法,但无济于事。非常感谢任何帮助。
答案 0 :(得分:8)
简单地:
<%- include(page) %>
或者如果它在partials
文件夹中:
<%- include('partials/'+page) %>
附:不要忘记将视图引擎声明为ejs
:
app.set('view engine', 'ejs');
&lt;% - 将未转义的值输出到模板
您可能希望将原始输出标记(&lt;% - )与您的include一起使用 避免双重转义HTML输出。
答案 1 :(得分:0)
例如使用登录页面
app.get('/login', (req, res)=>{
res.render('layout', {page: 'login'})
})
这里是简单的layout.ejs
<body>
<% include ./templates/nav %>
<div class="row">
<div class="col-md-2">
<% include ./templates/leftbar %>
</div>
<div class="col-md-8">
<%- include(page) %>
</div>
<div class="col-md-2">
<% include ./templates/rightbar %>
</div>
</div>
<% include ./templates/footer %>
</body>
login.ejs
<h1>Login</h1>
<form method="POST" action="/login">
<div class="form-group">
<label class="control-label">Username: </label>
<input class="form-control" type="text" name="username" placeholder="username">
</div>
<div class="form-group">
<label class="control-label">Password:</label>
<input class="form-control" type="text" name="password" placeholder="password" />
</div>
<input class="btn btn-info" type="submit" value="Login">
</form>