尝试修改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>
如果您有意见,请随意评论该方法。
谢谢!
答案 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