Heim > Artikel > Web-Frontend > So erstellen Sie Web- und TCP-Server in Node.js
In diesem Artikel werden hauptsächlich die Methoden und Verarbeitungsfähigkeiten der Verwendung von Node.js zum Erstellen von Webservern und TCP-Servern vorgestellt. Leser, die es benötigen, können es lernen.
Erstellen Sie einen Webserver mit dem http-Modul
Webserverfunktionen:
Akzeptieren Sie HTTP-Anfragen (GET, POST, DELETE, PUT, PATCH)
HTTP-Anfragen verarbeiten (selbst bearbeiten oder andere Programme damit beauftragen)
Eine Antwort geben (Seiten, Dateien, verschiedene Daten usw. zurückgeben)
Gemeinsame Webserverarchitektur:
Nginx, Apache: Verantwortlich für die Annahme von HTTP-Anfragen, die Bestimmung, wer die Anfrage bearbeitet, und die Rückgabe der Ergebnisse der Anfrage
php-fpm/ PHP-Modul: Verarbeitung der sich selbst zugewiesenen Anforderung und Rückgabe der Verarbeitungsergebnisse an den Auftraggeber
Gängige Anforderungstypen:
Anforderungsdateien: einschließlich statischer Dateien (Webseiten, Bilder, Front-End-JavaScript-Dateien, CSS-Dateien ...) und vom Programm verarbeitete Dateien
Führen Sie bestimmte Vorgänge aus: z. B. Anmelden, Abrufen bestimmter Daten usw.
Knoten .js-Webserver:
Verlässt sich nicht auf andere spezifische Webserver-Software (wie Apache, Nginx, IIS...)
Node.js-Code verarbeitet die Anforderungslogik
Node.js Der Code ist für verschiedene „Konfigurationen“ des Webservers verantwortlich
Erstellen eines Webservers mit Express
Einfacher Express-Server
Statischer Dateidienst
Routing
Middleware
Einfacher Express-Server:
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>});
Statischer Dateibereich:
Webseiten, einfacher Text, Bilder, Front-End-JavaScript-Code, CSS-Stylesheet-Dateien, Mediendateien, Schriftartdateien
Verwenden Sie Express, um auf statische Dateien zuzugreifen
<span style="white-space:pre"></span>app.use(express.static('./public'));
Routing:
Andere zuweisen Anfragen an die entsprechenden Verarbeitungsfunktionen
Unterscheidung: Pfad, Anforderungsmethode
Drei Routing-Implementierungsmethoden:
Pfad: relativ einfach
Router: besser geeignet für mehrere Unterrouten unter derselben Route
Route: besser geeignet für API
Middleware
Connect: Middleware-Framework von Node.js
Schichtverarbeitung
Jede Ebene implementiert eine Funktion
Erstellen Sie einen TCP-Server
Verwenden Sie das Netzmodul, um einen TCP-Server zu erstellen
Verwenden Sie Telnet, um eine Verbindung zum TCP-Server herzustellen
Verwenden Sie net, um einen TCP-Client zu erstellen
Verwenden Sie node.js, um einen einfachen Webserver-JS-Codeteil zu erstellen:
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/");
Das Obige habe ich für alle zusammengestellt. Ich hoffe, dass es in Zukunft für alle hilfreich sein wird.
Verwandte Artikel:
Fehler beim Laden des Pfads inlaydate.js
So implementieren Sie die Routenparameterübergabe in vue-router
So führen Sie Zellen mit jQuery zusammen, um eine Tabelle zu bedienen
Das obige ist der detaillierte Inhalt vonSo erstellen Sie Web- und TCP-Server in Node.js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!