如何包装节点快速输出,以便它可以作为JavaScript包含?

时间:2017-09-07 01:07:05

标签: javascript html node.js express include

尝试修改node.js express以将标准输出包装在javascript中(利用document.write),以便我可以将其包含在其他HTML文件中。我想在快速级别对输出进行编码,并在客户端对其进行解码。

编辑:我想创建一个生成HTML输出的标准节点应用程序,但在使用javascript发送之前将其包装起来。这样我就可以继续使用快速把手和其他附件而不会中断输出。

如果这已经是节点中的一件事,请指向我如何实现它的文档?否则,我正在寻找在express中更改代码的位置以包装每个输出。

为清楚起见;要回答请参考正确的快递文件,并从现有代码开始,以生成一个实现我目标的修改版本。

我正在看的Express版本是4.15.4。我查看了代码并找到了index.js和route.js文件(https://github.com/expressjs/express/tree/master/lib/router),但不太了解知道修改代码的位置。

示例

我的最初目标是让我的节点应用程序返回包含在代码中的编码HTML,类似于以下内容:

var str = "<encoded content goes here>";
document.write(decodeURI(str));

从HTML调用我的节点的示例方法:

<script src='http://localhost:3000/'></script>

如果您有意见,请随意评论该方法。

谢谢!

1 个答案:

答案 0 :(得分:0)

我想我已经解决了。

在档案https://github.com/expressjs/express/blob/master/lib/response.js @第116行,我添加了以下代码:

  chunk = "str = \""+encodeURI(body)+"\";\ndocument.write(decodeURI(str));\n";

似乎已经奏效。

所以:

res.send = function send(body) {
  var chunk = body;
  var encoding;
  var len;
  var req = this.req;
  var type;

  // settings
  var app = this.app;
<added my code here>
  // allow status / body