В Express.js, как я могу отрисовать частичный вид Jade без объекта "response"?
Используя Express.js, я хотел бы сделать частичный просмотр шаблона Jade переменной.
Обычно вы визуализируете частичный вид объекта ответа:
response.partial('templatePath', {a:1, b:2, c:3})
Однако, поскольку я внутри события сервера Socket.io, у меня нет объекта ответа.
Есть ли элегантный способ визуализации частичного представления Jade переменной без с использованием объекта ответа?
Ответы
Ответ 1
Вы можете вручную скомпилировать шаблон Jade.
var jade = require('jade');
var template = require('fs').readFileSync(pathToTemplate, 'utf8');
var jadeFn = jade.compile(template, { filename: pathToTemplate, pretty: true });
var renderedTemplate = jadeFn({data: 1, hello: 'world'});
Ответ 2
Здесь прямое решение этой проблемы для экспресс-пользователей 3 (которые должны быть широко распространены):
res.partial() был удален, но вы всегда можете использовать app.render() с помощью функции обратного вызова, если объект ответа не является частью текущего контекста, например, в случае с Liors:
app.render('templatePath', {
a: 1,
b: 2,
c: 3
},function(err,html) {
console.log('html',html);
// your handling of the rendered html output goes here
});
Так как app.render() является функцией объекта экспресс-приложения, он, естественно, знает о настроенном шаблоне и других настройках. Он ведет себя так же, как конкретный res.render() на app.get() или других событиях экспресс-запроса.
См. также: