Рендеринг шаблона в переменную в expressjs - PullRequest
14 голосов
/ 02 октября 2011

Есть ли способ вывести шаблон в переменную вместо вывода?

res.render('list.ejs', {
    posts: posts
});

как то так

var list = render('list.ejs', {
    posts: posts
});

Ответы [ 3 ]

26 голосов
/ 02 октября 2011

Самый простой способ сделать это - передать обратный вызов res.render, в вашем примере:

res.render('list.ejs', {posts: posts}, function(err, list){
  // 
});

Но если вы хотите визуализировать частичные шаблоны, чтобы включить их в другой шаблон, вы определенноследует взглянуть на view partials .

2 голосов
/ 25 апреля 2015

Первоначально этот вопрос не задавался, но, основываясь на комментариях ОП и других, кажется, что цель состоит в том, чтобы сделать частичное с помощью json (jsonp), что я только что должен был сделать.

Это довольно просто:

app.get('/header', function (req, res)
{
    res.render('partials/header', { session: req.session, layout: null }, function (err, output)
    {
        res.jsonp({ html: output });
    });    
});

Примечание. В моем случае для частичного заголовка требовался сеанс, а моей библиотеке шаблонов (express-hbs) требовалось layout: null для рендеринга частичного без использования значения по умолчанию.layout.

Затем вы можете вызвать это из кода Javascript на клиенте, как и любую другую конечную точку JSONP.

2 голосов
/ 02 октября 2011

Я довольно новичок в express.js, в любом случае, я не уверен, что вы можете получить доступ к отображаемой строке таким образом, хотя, если вы посмотрите на экспресс-источник "view.js" на github ( здесь ) вы видите, что он принимает обратный вызов в качестве второго аргумента, если это может помочь: вы можете получить доступ к отображаемой строке там.

В противном случае, я думаю, что довольно просто пропатчить код, чтобы добавить метод, возвращающий визуализированную строку без ее отправки: в строке # 399 у вас есть тот самый вызов, который дает искомую строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...