无需使用Node.js设置本地服务器?

问题描述:

我看到当我想在本地机器上写一个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时不需要本地服务器?

你确实有一个本地服务器......这是你的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服务器?如果是的话,有什么区别!:) **抱歉让你感到不安** –

由于节点出现开箱你需要运行一个Web服务器的所有库,在HTTP库您使用的是开放8080端口和处理与您提供的

这部分的功能要求:

function(request,response){ 

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

} 

不,你不需要它。因为节点本身可以​​成为你的网络服务器,就像你的例子一样。节点构建在V8上,这是一个Chrome JavaScript引擎。

看看一个快速JS模块,为您提供了很多功能开箱

+1

基于V8并没有真正解释*为什么* Node可以充当Web服务器。这与Node内置的HTTP库有关。 – ssube