2017-09-07 21 views
0

尝试修改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如果您有意见,请采取措施。

谢谢!

+1

您将只返回它在你的GET处理..如..'app.get( '/',函数(REQ,RES){res.end(“<编码的内容在这里>“);})' – Keith

+0

所以也许我会感到困惑,因为我也使用快速句柄。 router.get('/ js',function(req,res){ \t var str =“

This is a test
”; \t res.render('jsinclude',{content:str,layout:false}); }); – Daz

+0

@keith虽然这将工作,我意识到我想要做的是生成一个标准的节点应用程序,返回HTML,但在最后用这个JavaScript包装它。我会更新这个问题。 – Daz

回答

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 
相关问题