Как отобразить вид и макет для домашней страницы?

Что касается домашней страницы моего сайта, использующей Node.js, как мне отобразить макет и соответствующий вид домашней страницы?

Каждая страница моего сайта должна использовать layout.ejs, так как он содержит верхний и нижний колонтитулы. Содержимое тела для соответствующего представления страницы вводится в layout.ejs в этом разделе yield: <%- body %>

До сих пор, используя этот код, домашняя страница отображала layout.ejs, но не index.ejs для партиала представления. Как пройти в index.ejs?

app.get('/', function(request, response) {
    response.render('layout.ejs');
});

person Matt    schedule 18.07.2013    source источник
comment
В настоящее время в EJS нет понятия блоков, только время компиляции includes и Чтобы вернуть функциональность макета с помощью EJS, вы можете использовать express-partials или ejs-locals. (источник)   -  person Jonathan Lonowski    schedule 19.07.2013


Ответы (2)


Насколько мне известно, это не то, что EJS действительно может сделать. Вы можете попробовать отобразить шаблон тела отдельно и передать его как переменную тела.

// something we prepared earlier
var body = ejs.compile(fs.readFileSync("body.ejs"));

app.get('/', function(request, response) {
  response.render('layout.ejs', {
    body: body(someObject)
  });
});
person Morgan ARR Allen    schedule 18.07.2013

Если я правильно понимаю, вы хотите включить в каждую страницу верхний и нижний колонтитулы. В ejs вы можете включить, чтобы вы могли создать header.ejs и footer.ejs, и на каждой странице вы напишите `‹% include ./header.ejs %> вверху и ‹% include ./footer.ejs %> внизу. Таким образом, каждый раз, когда вы загружаете index.ejs, например, он будет отображаться, поскольку он содержит верхний и нижний колонтитулы. К сожалению, в настоящее время это наиболее близко к макету в ejs. Вы сможете сделать это так же просто, как и сейчас:

app.get('/', function(request, response) {
    response.render('index.ejs');
});
person anges244    schedule 21.09.2013