node.js Express - Как получить частичные представления асинхронно - PullRequest
4 голосов
/ 15 мая 2011

У меня есть раскладка - меню навигации.В экспресс-уроках есть только загрузка старых страниц.вся старая страница выбрасывается, а новая загружается со всеми макетами, видами и частичными видами.И я хочу, чтобы навигационное меню оставалось.Так как я могу это сделать?

Если я, возможно, что-то не так с этой архитектурой веб-страниц, направьте меня.

Ответы [ 2 ]

11 голосов
/ 21 мая 2011

Как сказал @drachenstern, вы хотите визуализировать только частичные фрагменты HTML, а не целые документы, включая макет.Вы можете указать Express, чтобы пропустить макет, используя:

res.render('sometemplate', {layout: false});

Если вы хотите, чтобы Ajax-запросы отличались от полностраничных загрузок браузера, используйте флаг req.xhr , как описано здесь

Таким образом, вы можете даже сделать

res.render('sometemplate', {layout: !req.xhr});
0 голосов
/ 15 мая 2012

Вы также можете использовать res.partial (), который специально предназначен для рендеринга партиалов.

Вот пример его использования, где 'browse.jade' - это имя шаблона:

exports.browse = function(req, res){
  var Contact = mongoose.model('Contact');
  Contact.where({}).asc('surname', 'given_name', 'org').run(function(err, results) {
    res.partial('browse', { 
        locals: { data: results }
    });
  });
};
...