如何在hapi.js ejs布局中获得多个内容区域?
我想定义一个模板,在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>
对我来说很重要,但是它的工作原理是,模板中定义了不同的布局内容,而不是在路由级别传入。 这可能吗?
是的,这根本不明显。 我能够做到这一点:
- 设置默认的上下文对象
- 修改模板中的对象
- 在布局中引用该对象的属性
例如:
设置默认的上下文对象
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>
正如你所看到的,你可以将文本或整个标签传递给布局。 希望这可以帮助。