Я работаю через Sams «Node.js за 24 часа». Глава 8 дает мне трудности (более часа)! Пример 07 позволяет программисту создать страницу, посредством которой пользователь может создать список задач, который хранится в MongoDb. Код использует Express и Jade. Следуя инструкциям, все работает ... за исключением того, что я заметил, что «title» не является рендерингом, и вместо этого я получаю общий заголовок, путь к каталогу маршрута. Почему мой вопрос? Я думаю, что я правильно использую res.render, файлы индекса/макета Jade согласуются с авторами (отмечены https://github.com/shapeshed/nodejsbook.io).Nodejs/Express - 'title' не отображается
Обновление: так как это было похоже на layout.jade, я удалил его. Ошибка не возникла, и проблема остается. Почему/как можно было игнорировать layout.jade?
** Заключение **: «Node.js за 24 часа» предполагает экспресс 2. В соответствии с инструкциями по установке книги Express 3, следовательно, существуют трудности (средство защиты ниже). Обратите внимание на то, что в главе 8 этой книги описывается связь Node.js/Mongodb/Jade/Flash после простейшего введения в Jade (Chap 6) и вообще не для Flash. Это займет больше часа, если вы уже недостаточно опытный разработчик.
Структура каталога:
\connect_to_mongo
|
|- \node_modules
|- \public
|- \routes
|- \views
| |- \tasks
| | |- index.jade
| | |- new.jade
| |- index.jade
| |- layout.jade
|- app.js
|- package.json
app.js содержит:
app.get('/tasks/new', function(req,res) {
Task.find({}, function(err,docs) {
res.render('tasks/new.jade', {
title:'New Tasks'
});
});
});
layout.jade является:
!!!
html
head
title #{title}
link(rel='stylesheet', href='http://twitter.github.com/bootstrap/1.4.0/bootstrap.min.css')
body
section.container!= body
задачи/index.jade является:
h1 Your tasks
p
a(href='/tasks/new', class='btn primary') Add a Task
- if(docs.length)
table
tr
th Task
each task in docs
tr
td #{task.task}
- else
p You don't have any tasks!
Обратите внимание на то же поведение для всех последних браузеров: Firefox, Chrome и IE. Вариации присвоения 'title' в 'layout.jade' не влияют. – MikeB