如何包装节点快递输出,以便它可以包含为JavaScript?
问题描述:
尝试修改node.js表达以在javascript中使用标准输出(使用document.write),以便将其包含到其他HTML文件中。我想将输出编码为快速水平,并在客户端进行解码。如何包装节点快递输出,以便它可以包含为JavaScript?
编辑:我想创建一个标准的节点应用程序,可以生成HTML输出,但只是在用javascript发送之前将其封装。这样我就可以继续使用快速句柄和其他插件而不会中断输出。
如果这已经是节点中的事情,请指出我有关如何实现它的文档?否则,我正在寻找在哪里更改快递代码以包装每个输出。
为了清楚起见,要回答请包括正确的快递文件的参考,并从现有的代码开始,以产生一个实现我的目标的修改版本。
我正在看的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>
随时欢迎commen如果您有意见,请采取措施。
谢谢!
答
我想我已经解决了。
在文件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
您将只返回它在你的GET处理..如..'app.get( '/',函数(REQ,RES){res.end(““);})' – Keith
所以也许我会感到困惑,因为我也使用快速句柄。 router.get('/ js',function(req,res){ \t var str =“
@keith虽然这将工作,我意识到我想要做的是生成一个标准的节点应用程序,返回HTML,但在最后用这个JavaScript包装它。我会更新这个问题。 – Daz