Node.jsはWeb、TCPサーバを作成します。


httpモジュールを使ってWebサーバを作成する
Webサーバの機能:
HTTP要求(GET、POST、DELETE、PUT、PATCH)を受け付ける。
HTTP要求を処理する(自分で処理するか、または他のプログラム処理を要求する)
応答をする(ページ、ファイル、各種データなどに戻る)
一般的なWebサーバアーキテクチャ:
NFingx、Apache:HTTPの要求を受けて、誰が要求を処理しますか?そして要求の結果を返します。
php-fpm/phpモジュール:自分に割り当てられた要求を処理し、処理結果を分配者に返す。
一般的な要求の種類:
要求ファイル:静止ファイル(ウェブページ、画像、フロントエンドJavaScriptファイル、cssファイル…)と、プログラムによって処理されたファイルを含む。
特定の操作を完了する:登録、特定のデータの取得など
Node.jsのWebサーバ:
他の特定のWebサーバソフトウェアに依存しない(Apache、Nginx、IISなど)
ノード.jsコード処理要求の論理
Node.jsコードは、Webサーバの様々な「構成」を担当しています。
Expressを使ってWebサーバを作成します。
簡単なExpressサーバー
静的ファイルサービス
ルート
中間部品
簡単なExpressサーバ:

var express = require('express'); 
var app = express(); 
app.get('', function(req, res){ 
<span style="white-space:pre"> </span>res.end('hello
'); <span style="white-space:pre"> </span>}); <span style="white-space:pre"> </span>app.listen(18001, function afterListen(){ <span style="white-space:pre"> </span>console.log('express running on http://localhost:18001'); <span style="white-space:pre"> </span>});
静的ファイル範囲:
ウェブページ、テキスト、画像、フロントエンドJavaScriptコード、CSSスタイル表ファイル、メディアファイル、フォントファイル
Expressを使って静的ファイルにアクセスします。

<span style="white-space:pre"></span>app.use(express.static('./public'));
ルート:
異なる要求を対応する処理関数に割り当てます。
区分:経路、要求方法
3つのルートの実現方法:
path:比較的簡単です
Router:同じルートの複数のサブルートに比較的に適しています。
route:APIに適しています。
中間部品
Connect:Node.jsのミドルフレーム
レイヤー処理
レイヤーごとに一つの機能を実現します。
TCPサーバを作成
netモジュールを使ってTCPサーバを作成します。
telnetを使ってTCPサーバに接続する
netを使ってTCPクライアントを作成します。
node.jsを利用して簡単なwebサーバJSコード部分を構築する:

var http = require('http');
var url = require('url');
var path = require('path');
var fs = require('fs');
var dir, arg = process.argv[2] || ''; //         ,      ,   ,    server.js       
//        node server debug,    debug    server.js    
//     debug     web  
 
http.createServer(function (req, res) {
var pathname = __dirname + url.parse(req.url).pathname;
dir = dir ? dir : pathname; //   dir(  )
pathname = dir ? pathname.replace(dir, dir + arg + '/') : pathname; //         
if (path.extname(pathname) == "") {
pathname += "/";
}
if (pathname.charAt(pathname.length - 1) == "/") {
pathname += "index.html"; //     ,    index.html
}
 
fs.exists(pathname, function (exists) {
if (exists) {
switch (path.extname(pathname)) {
case ".html":
res.writeHead(200, {"Content-Type": "text/html"});
break;
case ".js":
res.writeHead(200, {"Content-Type": "text/javascript"});
break;
case ".css":
res.writeHead(200, {"Content-Type": "text/css"});
break;
case ".gif":
res.writeHead(200, {"Content-Type": "image/gif"});
break;
case ".jpg":
res.writeHead(200, {"Content-Type": "image/jpeg"});
break;
case ".png":
res.writeHead(200, {"Content-Type": "image/png"});
break;
default:
res.writeHead(200, {"Content-Type": "application/octet-stream"});
} 
// res                     header              
fs.readFile(pathname, function (err, data) {
res.end(data);
});
}
else {
res.writeHead(404, {"Content-Type": "text/html"});
res.end("<h1>404 Not Found</h1>");
}
});
}).listen(8085, "127.0.0.5"); //      
console.log("server running at http://127.0.0.5:8085/");