2017-09-07 58 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 
相關問題