我想在hapi.js中使用ejs在包含布局中呈现的模板中定义信息。例如:
的layout.html
<html>
<head>
<title><%- contentFor('title') %></title>
</head>
<body>
<%- content %>
</body>
</html>
的index.html
contentFor('title', 'My title')
<h1>My content</h1>
对我来说很重要的是,无论它是否有效,都会在模板中定义不同的布局内容,而不是在路由级别传递。这可能吗?
答案 0 :(得分:1)
是的,这根本不明显。我能够通过以下方式做到这一点:
例如:
设置默认上下文对象
server.register(plugins, (err) => {
...
server.views({
context: {
layoutContent: {}
}
})
}
修改模板中的对象
// templates/my_template.html
<%
layoutContent = {
title: 'My Title'
meta: '<meta name="description" content="my content">'
}
%>
引用布局中的对象
// layouts/layout.html
<html>
<head>
<title><%- layoutContent.title %></title>
<%- layoutContent.meta %>
</head>
<body>
<%- content %>
</body>
</html>
如您所见,您可以将文本或整个标记传递给布局。希望这会有所帮助。