Heim > Web-Frontend > js-Tutorial > Hauptteil

Node.js erstellt Web- und TCP-Server

小云云
Freigeben: 2017-12-06 13:08:18
Original
1587 Leute haben es durchsucht

In diesem Artikel stellen wir hauptsächlich die Methoden und Verarbeitungstechniken zur Verwendung von Node.js zum Erstellen von Webservern und TCP-Servern vor. Wir hoffen, dass es allen helfen kann.

Webserverfunktionen:

HTTP-Anfragen akzeptieren (GET, POST, DELETE, PUT, PATCH)

HTTP verarbeiten Anfrage (selbst bearbeiten oder andere Programme damit beauftragen)

Antwort (Seiten, Dateien, verschiedene Daten usw. zurückgeben)

Common Web Serverarchitektur:

Nginx, Apache: Verantwortlich für die Annahme von HTTP-Anfragen, die Bestimmung, wer die Anfrage bearbeiten wird, und die Rückgabe des Ergebnisses der Anfrage

php- fpm / php Modul: Verarbeiten Sie die sich selbst zugewiesenen Anforderungen und geben Sie die Verarbeitungsergebnisse an den Zuweisenden zurück

Häufige Anforderungstypen:

Anforderungsdateien: einschließlich statischer Dateien (Webseiten, Bilder, Front-End-JavaScript-Dateien, CSS-Dateien ...) und vom Programm verarbeiteter Dateien

Führen Sie bestimmte Vorgänge aus: wie Anmelden, Abrufen bestimmter Daten, usw.

Node.js-Webserver:

Hängt nicht von anderer spezifischer Webserver-Software ab (wie Apache, Nginx, IIS). ..)

Node.js-Code verwaltet die Anforderungslogik

Node.js-Code ist für verschiedene „Konfigurationen“ des Webservers verantwortlich

Verwenden Sie Express, um einen Webserver zu erstellen

Einfacher Express-Server

Statische Dateibereitstellung

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(&#39;hello\n&#39;); 
<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(&#39;express running on http://localhost:18001&#39;); 
<span style="white-space:pre"> </span>});
Nach dem Login kopieren


Statisch Dateiumfang:

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(&#39;./public&#39;));
Nach dem Login kopieren


Routing:

Verschiedene Anfragen den entsprechenden Verarbeitungsfunktionen zuordnen

Unterscheidung: Pfad, Anforderungsmethode

Drei Routing-Implementierungsmethoden:

Pfad: relativ einfach

Router: besser geeignet für mehrere Routen unter derselben Route Unterroute

Route: besser geeignet für API

Middleware

Connect: Middleware-Framework für Node. js

Schichtverarbeitung

Jede Schicht implementiert eine Funktion

TCP-Server erstellen

Net-Modul verwenden 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(&#39;http&#39;);
var url = require(&#39;url&#39;);
var path = require(&#39;path&#39;);
var fs = require(&#39;fs&#39;);
var dir, arg = process.argv[2] || &#39;&#39;; // 命令行第三个参数,用来接收目录,可为空,相对当前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 + &#39;/&#39;) : 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/");
Nach dem Login kopieren


Der obige Inhalt wird mit den Web- und TCP-Servermethoden von Node.js erstellt. Ich hoffe, dass er allen helfen kann.

Verwandte Empfehlungen:

PHP und Node.js

Node.js lernt TCP/IP-Datenkommunikation

Verwandte Kenntnisse von Node.JS

Das obige ist der detaillierte Inhalt vonNode.js erstellt Web- und TCP-Server. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!