2015-10-05 73 views
1

我是新的節點,我試圖將結果打印到控制檯,並最終在HTML中顯示它們。我試圖調用函數作爲一個var,我稍後將在HTML中使用,但這不起作用。一些類似的示例代碼:如何將節點函數的結果寫入html/console日誌?

var app = require('express')(); 
var x = require('x-ray')(); 

app.get('/', function(req, res) { 
    res.send(x('http://google.com', 'title').write()); 
}) 

謝謝!

回答

1

我對「x-ray」庫的瞭解不多,但我認爲問題在於它,因爲它必須在可以返回響應數據之前異步發出請求。該文件說,如果你不設置路徑作爲參數傳遞給它返回一個可讀流的寫入功能,所以試試這個:

app.get('/', function(req, res) { 
    var stream = x('http://google.com', 'title').write(), 
     responseString = ''; 
    stream.on('data', function(chunk) { 
     responseString += chunk; 
    }); 
    stream.on('end', function() { 
     res.send(responseString); 
    }); 
}); 

您還需要啓動服務器偵聽特定端口上(3000在下面的例子):

const PORT = 3000; 
app.listen(PORT, function() { 
    console.log("Server is listening on port " + PORT + "."); 
}); // the callback function simply runs once the server starts 

現在打開你的瀏覽器,然後導航到127.0.0.1:3000localhost:3000,你會看到「谷歌」的出現!


ALSO:如果你想在一個完整的HTML頁面(而不僅僅是發送它自己的字符串)使用響應數據,你可能要進一步探討如何用玉做的快(或類似的)模板。而且,每當有人向您的服務器的相應路徑發出請求時,此時的代碼就會向Google進行刮擦;如果你只想刮一次Google,然後在服務器的響應中一次又一次地使用相同的字符串,你可能想要考慮如何實現這個(很簡單!)。