Подтвердить что ты не робот

В Express.js, как я могу отрисовать частичный вид Jade без объекта "response"?

Используя Express.js, я хотел бы сделать частичный просмотр шаблона Jade переменной.

Обычно вы визуализируете частичный вид объекта ответа:

response.partial('templatePath', {a:1, b:2, c:3})

Однако, поскольку я внутри события сервера Socket.io, у меня нет объекта ответа.

Есть ли элегантный способ визуализации частичного представления Jade переменной без с использованием объекта ответа?

4b9b3361

Ответ 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() или других событиях экспресс-запроса.

См. также: