2016-08-30 85 views
3

我看到當我想在本地機器上寫一個Node.js Web應用程序時,我不需要使用WAMP或MAMP設置本地服務器。 node.js在幕後做了些什麼?我提供這個代碼,以使一個簡單的Hello World Web應用程序:無需使用Node.js設置本地服務器?

var http = require("http"); 

http.createServer(function(request,response){ 

    response.writeHead(200, {"content-type":"text/html"}); 
    response.write("hello world"); 
    response.end(); 

}).listen(8080); 

console.log("server is running...."); 

當在瀏覽器地址欄加載「本地主機:8080」它的工作原理。

這是如何工作的,爲什麼我在使用Node.js時不需要本地服務器?

回答

3

你確實有一個本地服務器......這是你的Node.js應用程序。

當您撥打http.createServer()時,它會創建一個HTTP服務器。當您在該服務器上呼叫.listen()時,它會綁定到請求的端口以及可選的請求地址,並偵聽連接。當數據進入這些連接時,它會像其他任何HTTP服務器一樣響應。

的HTTP服務器使用您的請求/響應回調,發射它,每當一個有效的HTTP請求的用武之地。

+0

http.createServer(的)不爲我創建一個服務器,它有一定道理吧。但是當我把我的網站放在託管服務器上時,我是否還需要使用「createServer()」方法?我想不是因爲我的網站已經上傳到遠程服務器上了嗎?這真是令人困惑對不起 –

+1

@FaisalJulaidan您的節點應用程序未在Web服務器中運行。您的Node.js應用程序需要一種溝通方式。這通常是HTTP。通常將Web服務器(如Nginx)放在應用程序前面,但該HTTP服務器仍將使用HTTP與應用程序進行通信。 – Brad

+0

據我瞭解,從您的評論是有兩種類型的服務器1.HTTP服務器2.Web服務器?如果是的話,有什麼區別!:) **抱歉讓你感到不安** –

2

由於節點出現開箱你需要運行一個Web服務器的所有庫,在HTTP庫您使用的是開放8080端口和處理與您提供的

這部分的功能要求:

function(request,response){ 

    response.writeHead(200, {"content-type":"text/html"}); 
    response.write("hello world"); 
    response.end(); 

} 
0

不,你不需要它。因爲節點本身可以​​成爲你的網絡服務器,就像你的例子一樣。節點構建在V8上,這是一個Chrome JavaScript引擎。

看看一個快速JS模塊,爲您提供了很多功能開箱

+1

基於V8並沒有真正解釋*爲什麼* Node可以充當Web服務器。這與Node內置的HTTP庫有關。 – ssube