この記事では、Node.js を使用して Web サーバーと TCP サーバーを作成する方法と処理スキルを主に紹介します。必要な読者はそれを学ぶことができます。
http モジュールを使用して Web サーバーを作成します
Web サーバーの機能:
HTTP リクエストを受け入れる (GET、POST、DELETE、PUT、PATCH)
HTTP リクエストを処理する (自分で処理するか、他のプログラムにリクエストを要求する)処理します)
応答 (ページ、ファイル、さまざまな種類のデータなどを返す)
一般的な Web サーバー アーキテクチャ:
Nginx、Apache: HTTP リクエストの受け入れ、リクエストを処理するユーザーの決定、および返信を担当します。リクエストの結果
php -fpm/php モジュール: 自身に割り当てられたリクエストを処理し、処理結果を割り当て者に返します
一般的なリクエストの種類:
リクエスト ファイル: 静的ファイル (Web ページ、写真、フロントエンド JavaScript ファイル、CSS ファイル... .)、プログラムによって処理されるファイル
特定の操作を完了する: ログイン、特定のデータの取得など
Node.js Web サーバー:
他の特定の Web サーバー ソフトウェア (Apache、Nginx、IIS など) に依存しない
Node.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\n'); <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>});
静的ファイルスコープ:
Webページ、プレーンテキスト、画像、フロントエンドJavaScriptコード、CSS スタイル シート ファイル、メディア ファイル、フォント ファイル
Express を使用して静的ファイルにアクセスします
<span style="white-space:pre"></span>app.use(express.static('./public'));
ルーティング:
対応する処理関数に異なるリクエストを割り当てます
区別: パス、リクエスト メソッド
3 つのルーティング実装メソッド:
パス: 比較的シンプル
ルーター: 比較同じルート下の複数のサブルートに適しています
ルート: APIに適しています
ミドルウェア
接続: 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/");
上記は私があなたのためにまとめたものです。将来的に皆さんのお役に立てれば幸いです。
関連記事:
jQueryを使ってテーブルを操作してセル結合を実現する方法
以上がNode.js で Web サーバーと TCP サーバーを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。