如何将视图加载到变量中?

时间:2011-07-04 16:25:51

标签: javascript view node.js express

我需要使用websockets发送视图,以便可以在选项卡中加载它。但我似乎无法弄清楚如何将视图加载到变量中进行发送。似乎加载视图的唯一方法是调用response.render()函数。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

大多数模板引擎都可以将模板呈现给内存中的字符串,然后您可以通过Web套接字将其作为原始数据发送。以下是jade的示例。

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
});

如果您具体提到您正在使用的模板引擎,我们可以根据需要提供具体示例。

这是how to do it with EJS

html = new EJS({url: '/template.ejs'}).render(data)

答案 1 :(得分:1)

虽然Peter的解决方案适用于Jade,但我使用的是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 });
});
相关问题