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サーバ:
ウェブページ、テキスト、画像、フロントエンドJavaScriptコード、CSSスタイル表ファイル、メディアファイル、フォントファイル
Expressを使って静的ファイルにアクセスします。
異なる要求を対応する処理関数に割り当てます。
区分:経路、要求方法
3つのルートの実現方法:
path:比較的簡単です
Router:同じルートの複数のサブルートに比較的に適しています。
route:APIに適しています。
中間部品
Connect:Node.jsのミドルフレーム
レイヤー処理
レイヤーごとに一つの機能を実現します。
TCPサーバを作成
netモジュールを使ってTCPサーバを作成します。
telnetを使ってTCPサーバに接続する
netを使ってTCPクライアントを作成します。
node.jsを利用して簡単なwebサーバJSコード部分を構築する:
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/");