如何在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> 

对我来说很重要,但是它的工作原理是,模板中定义了不同的布局内容,而不是在路由级别传入。 这可能吗?

是的,这根本不明显。 我能够做到这一点:

  1. 设置默认的上下文对象
  2. 修改模板中的对象
  3. 在布局中引用该对象的属性

例如:

设置默认的上下文对象

 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> 

正如你所看到的,你可以将文本或整个标签传递给布局。 希望这可以帮助。