Как мне загрузить представление в переменную? - PullRequest
0 голосов
/ 04 июля 2011

Мне нужно использовать веб-сокеты для отправки представления, чтобы его можно было загрузить на вкладке. Но я не могу понять, как загрузить представление в переменную для отправки. Похоже, что единственный способ загрузить представление - это вызвать функцию response.render().

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 04 июля 2011

Большинство шаблонизаторов могут отображать шаблон в строку в памяти, которую затем можно отправить через веб-сокет в виде необработанных данных. Вот пример из Джейд .

var jade = require('jade');

// Render a string
jade.render('string of jade', { options: 'here' });

// Render a file
jade.renderFile('path/to/some.jade', { options: 'here' }, function(err, html){
    // options are optional,
    // the callback can be the second arg
});

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

Вот как это сделать с EJS :

html = new EJS({url: '/template.ejs'}).render(data)
1 голос
/ 04 июля 2011

Хотя решение Питера будет работать для Джейд, я использую EJS.И EJS не имеет функции renderFile.Итак, вот общий способ чтения простого HTML-файла:

s.readFile(__dirname + '/views/tabs/' + data.tab + '/index.ejs', 'utf8', function( err, html )
{
    socket.emit( 'setTabHTML', { tab: data.tab, 'html': html });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...