0

我有一个名为 syntax.jade 的玉文件。我需要的是一种将 syntax.jade 以及我通常使用 res.render 语句传递的信息转换为节点中的 html 文档的方法,以便我可以以这种形式对其进行操作。基本上我想要的是这样的:

当我使用

res.render('syntax', {comment: comment}, function(err, html)) 

html 包含页面的 html 作为字符串。我需要另一种方法来获取不需要我在浏览器中呈现页面的代码。

我想这样做的原因是我可以将生成的 HTML 代码包含在另一个 res.render 语句中,以便提供格式设置,而不是在前端进行所有格式设置。

4

2 回答 2

1

您可以只需要 Jade 作为 Node 模块并使用该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});
于 2013-09-08T23:18:15.757 回答
0

那已经是你所拥有的了。从快速文档开始res.render

当提供回调时,可能的错误和呈现的字符串都会被传递,并且不会执行自动响应。

res.render(viewName, locals)HTML 的呈现和将该 HTML 作为 HTTP 响应正文发送也是如此。然而res.render(viewName, locals, callback),使用 3 个参数只会呈现 HTML 并将其传递给回调,而不发送任何 HTTP 响应。因此,您可以对 HTML 进行任何需要的操作,然后稍后发送响应。

还有app.render另一个通用实用程序可以渲染内容,而与特定的 http 请求/响应没有任何关系。

于 2013-09-08T23:16:27.117 回答