我有一个名为syntax.jade的jade文件。我需要的是一种方法,将syntax.jade与我通常用res.render语句传递的信息转换为节点中的html文档,以便我可以在该表单中操作它。基本上我想要的是这个:
当我使用
时res.render('syntax', {comment: comment}, function(err, html))
html包含页面的html作为字符串。我需要另一种方法来获取不需要我在浏览器中呈现页面的代码。
我想这样做的原因是我可以将生成的HTML代码包含在另一个res.render语句中,以便提供格式而不是在前端进行所有格式化。
答案 0 :(得分:1)
您可以将Jade作为节点模块,并使用renderFile()
方法。
var jade = require('jade');
jade.renderFile('syntax.jade', {comment: comment}), function (err, html) {
if (err) throw err;
// rendered string is in html variable
});
如果没有错误,那么您将获得一个呈现的HTML字符串。如果要同步执行此操作,则不要指定回调:
var html = jade.renderFile('filename.jade', {comment: comment});
答案 1 :(得分:0)
这已经是你的了。来自res.render
当回调提供可能的错误并呈现时 字符串被传递,并且不执行自动响应。
所以res.render(viewName, locals)
同时渲染HTML并将该HTML作为HTTP响应体发送。但是,带有3个参数的res.render(viewName, locals, callback)
只会呈现HTML并将其传递给回调,而不会发送任何HTTP响应。因此,您可以对HTML执行任何操作,然后稍后发送响应。
还有app.render
这是另一个通用实用工具,可以在不与特定http请求/响应有任何关系的情况下呈现内容。