2013-03-05 3 views
0

Я действительно новичок в Node, и я играю с Express и Jade, учебник, за которым я следую, устарел, и я не могу понять, как это сделать.Jade несколько файлов шаблонов

В моем app.js файл я объявил следующий маршрут:

app.get('/helloworld', function(req,res) { 
    res.render('tasks/helloworld.jade', { title: 'Hello World!' }); 
}); 

Так что для моих взглядов у меня есть следующие

layout.jade

doctype 5 
html 
head 
    title= title 
    link(rel='stylesheet', href='http://twitter.github.com/bootstrap/assets/css/bootstrap.css') 
body 
    section.container!= body 

Попытка использовать загрузчик css

, а затем задачи/helloworld.jade

extends ../layout 

body 
h1 Hello World 

Однако, это, кажется, не дают результата, я имею в виду, что должен. Если я удалю extends ../layout, шаблон отобразит, но без заголовка. Если я оставлю это, я получаю сообщение об ошибке body is not defined

Любая идея, как правильно это сделать?

+0

Оставьте '.jade' в своем' res.render ('tasks/helloworld' ... ' –

ответ

4

В нефрите вы используете блоки для расширения шаблонов. Попробуйте это:

layout.jade:

helloworld.jade:

extends ../layout 

block content 
h1 Hello World 

Это позволит эффективно заменить все, что находится в block content Вашего макета с новым содержанием при условии, в данном случае h1 Hello World ,

Редактировать: Я добавил section.container в макет, потому что впоследствии понял, что, по-моему, вы пытаетесь обернуть все внутри тела. Если это не то, что вы пытаетесь сделать, вы можете удалить эту строку, но убедитесь, что исправили отступы, если вы это сделаете, потому что нефрит заботится об этом.

+0

Я пробовал помещать строки' block' с верхним и нижним колонтитулом, но они не отображаются ... любая идея почему? – vsync

Смежные вопросы