2013-07-18 3 views
0

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

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

До сих пор с помощью этого кода, домашней страницы оказания layout.ejs, но не index.ejs для зрения частичного. Как передать index.ejs?

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

«[* В настоящее время EJS не имеет никакого понятия блоков, только во время компиляции' include's *] (https://github.com/visionmedia/ejs#layouts) "и" * Чтобы вернуть функциональность макета с помощью EJS, вы можете использовать [экспресс-частичные] (https://github.com/publicclass/express-partials) или [ejs-locals] (https://github.com/RandomEtc/ejs-locals). * "([источник] (https://github.com/visionmedia/express/wiki/Migrating-from-2. x-to-3.x # view-system-changes)) –

+0

+1 к ejs-local. – leesei

ответ

0

Это не то, что 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) 
    }); 
}); 
0

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

app.get('/', function(request, response) { 
    response.render('index.ejs'); 
}); 
Смежные вопросы