2013-08-05 2 views
5

Я работаю с Node.js и выражаю. Предположим, у меня есть пара нефрита файлов:Render single block in jade

template.jade

html 
    body 
    block page-content 

example.jade

extends template 
    block page-content 
     p 
      | Lorem ipsum yadda yadda 

Если я сделать example.jade, я получу результат закупорки, что пункт тег в тег body template.jade, который обычно мне нужен.

Моя проблема заключается в том, что я пытаюсь использовать pushState и API истории для загрузки этих файлов (ну, obivously not-these-files), и при этом мне нужен запрос, который просто возвращает содержимое самого блока содержимого страницы, без остальной части полного html-документа. Есть ли простой способ рассказать Джейд просто визуализировать блок и не встраивать его в шаблон?


Лучшее, что я мог придумать изменял, что это:

example.jade

extends template 
    block page-content 
    import example-content 

Примеру content.jade

p 
    | Lorem ipsum yadda yadda 

Но это казалось хаком для создания дополнительных файлов, подобных этому.

ответ

0

Jade поддерживает исполняемый код. При использовании префикса - (без буферизации). Например, вы можете использовать если Постулаты в основной шаблон макета нефрита:

- if (renderType && renderType == 'page') { 
    doctype 5 
    html 
     head 
     title= title 
     body 
- } 
     block content 

Рендер HTML страницу, как:

res.render('index', { title: 'StackOverflow', renderType: 'page' }); 

Рендер HTML блок, как:

res.render('index', { title: 'StackOverflow', renderType: 'block' }); 

И если вы не 't like use renderType переменная во всех выражениях визуализации, используйте

res.locals(obj) //*Assign several locals with the given obj. The following are equivalent:* 

и установить значение по умолчанию для всех запросов. Где вы инициализации приложения добавить обработчик:

var logger = function(req, res, next) 
{ 
    res.locals({renderType:'page'}); 
    next(); 
}; 

app.use(logger); 
+0

Я не думаю, что есть какой-нибудь способ условно включать «расширяет шаблон» линии; ставя два гигантских, если блоки внутри моего файла шаблона кажутся болезненными. – Retsam