在Express.js中,如何渲染不带“响应”对象的Jade局部视图?

使用Express.js,我想呈现从Jade模板的部分视图到variables。

通常,您直接向响应对象渲染部分视图:

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

但是,由于我在Socket.io服务器事件中,我没有“响应”对象。

有没有一种优雅的方式来呈现一个Jade的部分视图而不使用响应对象的variables?

您可以手动编译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'}); 

这是直接解决这个问题的快递3用户(现在应该广泛传播):

res.partial()已被删除,但是如果响应对象不是当前上下文的一部分,就像使用Liors情况一样,您可以始终使用app.render()使用callback函数

 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()是快速应用程序对象的一个​​function,所以它很自然地知道configuration的模板引擎和其他设置。 它的行为与app.get()或其他快速请求事件上特定的res.render()方法相同。

也可以看看: