2016-08-30 6 views
3

ローカルマシンにNode.js Webアプリケーションを書きたい場合は、WAMPまたはMAMPを使用してローカルサーバーを設定する必要はありません。 node.jsが本当に背後にあるのは何ですか?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...."); 

私のブラウザのURLバー "localhost:8080"にロードすると動作します。

これはどのように機能し、Node.jsを操作するときにローカルサーバーが必要なのですか?

答えて

3

ローカルサーバーがあります。これはNode.jsアプリケーションです。

http.createServer()に電話すると、HTTPサーバーが作成されます。そのサーバー上で.listen()に電話すると、要求されたポートとオプションで要求されたアドレスにバインドし、接続を待ち受けます。これらの接続でデータが受信されると、他のHTTPサーバーと同様に応答します。

HTTPサーバが有効なHTTP要求が入ってきたときに、それを発射、あなたの要求/応答のコールバックを使用しています。

+0

http.createServer(のうち、あなたの機能の多くを与える見えるエクスプレスJSモジュールを取る)は私のためにサーバーを作成し、それは今意味を成しません。しかし、私は自分のWebサイトをホスティングサーバーに置いても、 "createServer()"メソッドを使う必要がありますか?私のウェブサイトは既にリモートサーバーにアップロードされているので、私はノーだと思いますか?これは本当に混乱しています –

+1

@FaisalJulaidanあなたのノードのアプリはWebサーバー内で実行されていません。 Node.jsアプリケーションには、通信する方法が必要です。これは通常HTTPです。アプリケーションの前にWebサーバー(Nginxなど)を置くのが一般的ですが、HTTPサーバーはアプリケーションと通信するためにHTTPを使用します。 – Brad

+0

私はあなたのコメントから理解している限り、サーバーの2種類があることです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

いいえ、あなたがそれを必要としません。あなたの例のように、ノード自体があなたのウェブサーバになる可能性があるからです。ノードはChromeのJavaScriptエンジンであるV8上に構築されています。

ボックス

+1

V8に基づいていることは実際には説明できません*なぜ*ノードはWebサーバーとして機能することができます。これは、Nodeに組み込まれているHTTPライブラリと関連があります。 – ssube

関連する問題