VorwortDer Zweck der Node.js-Entwicklung besteht darin, Webserverprogramme in JavaScript zu schreiben. Da JavaScript tatsächlich das browserseitige Scripting dominiert, liegt sein Vorteil darin, dass es über die weltweit größte Zahl an Front-End-Entwicklern verfügt. Wenn Sie die Front-End-Entwicklung in JavaScript bereits beherrschen und anschließend lernen, wie Sie JavaScript in der Back-End-Entwicklung anwenden, können Sie ein echter Full-Stack-Entwickler werden. HTTPUm zu verstehen, wie ein Webserverprogramm funktioniert, müssen wir zunächst ein grundlegendes Verständnis des HTTP-Protokolls haben. Wenn Sie mit dem HTTP-Protokoll nicht vertraut sind, sehen Sie sich zunächst die Einführung in das HTTP-Protokoll an. HTTP-ServerEs ist unrealistisch, ein HTTP-Serverprogramm zu entwickeln, TCP-Verbindungen zu verarbeiten und HTTP von Grund auf zu analysieren. Diese Aufgaben wurden tatsächlich vom http-Modul erledigt, das mit Node.js geliefert wird. Die Anwendung beschäftigt sich nicht direkt mit dem HTTP-Protokoll, sondern bedient die vom HTTP-Modul bereitgestellten Anforderungs- und Antwortobjekte. Das Anforderungsobjekt kapselt die HTTP-Anforderung. Wir können alle Informationen der HTTP-Anforderung abrufen, indem wir die Eigenschaften und Methoden des Anforderungsobjekts aufrufen. Das Antwortobjekt kapselt die HTTP-Antwort. Indem wir die Methoden des Antwortobjekts bedienen, können wir die HTTP-Antwort an den Browser zurückgeben. Mit Node.js ist es sehr einfach, ein HTTP-Serverprogramm zu implementieren. Lassen Sie uns ein einfaches Webprogramm implementieren, hello.js, das für alle Anfragen „Hallo Welt!“ zurückgibt: „streng verwenden“; var http = require('http'); // Importieren Sie das HTTP-Modul. // Erstellen Sie einen HTTP-Server und übergeben Sie die Rückruffunktion. Die Callback-Funktion empfängt die Anfrage- und Antwortobjekte var server = http.createServer(function (request, response){ console.log(request.method + ': ' + request.url); // Methode und URL der HTTP-Anfrage abrufen: response.writeHead(200, {'Content-Type': 'text/html'}); // Schreibe die HTTP-Antwort 200 in die Antwort und setze den Content-Type: text/html response.end('<h1>Hallo Welt!</h1>'); });// Schreibe den HTML-Inhalt der HTTP-Antwort in response server.listen(8080); // Lassen Sie den Server auf Port 8080 lauschen. console.log('Der Server läuft unter http://127.0.0.1:8080/'); Wenn Sie das Programm in der Eingabeaufforderung ausführen, wird die folgende Ausgabe angezeigt:
Schließen Sie die Eingabeaufforderung nicht, öffnen Sie den Browser und geben Sie http://localhost:8080 ein, um die Serverantwort anzuzeigen: Gleichzeitig können Sie im Eingabeaufforderungsfenster die vom Programm gedruckten Anforderungsinformationen sehen:
Dies ist unser erstes HTTP-Serverprogramm! DateiserverLassen Sie uns das obige Webprogramm weiter ausbauen. Wir können ein Verzeichnis einrichten und das Webprogramm in einen Dateiserver verwandeln. Um dies zu erreichen, müssen wir nur den Pfad in request.url analysieren, dann die entsprechende Datei lokal finden und den Dateiinhalt senden. Zum Parsen von URLs ist das von Node.js bereitgestellte URL-Modul erforderlich. Es ist sehr einfach zu verwenden. Es parst einen String durch parse() in ein URL-Objekt: „streng verwenden“; var url = erforderlich('url'); console.log(url.parse('http://user:[email protected]:8080/Pfad/zur/Datei?query=string#hash')); Die Ergebnisse sind wie folgt:
Um lokale Dateiverzeichnisse zu verarbeiten, müssen Sie das von Node.js bereitgestellte Pfadmodul verwenden, mit dem sich problemlos Verzeichnisse erstellen lassen: „streng verwenden“; var Pfad = erforderlich('Pfad'); var workDir = path.resolve('.'); // Aktuelles Verzeichnis auflösen ('/Users/michael') var filePath = path.join(workDir, 'pub', 'index.html'); // Kombiniere den vollständigen Dateipfad: aktuelles Verzeichnis + 'pub' + 'index.html' ('/Users/michael/pub/index.html') Verwenden Sie das Pfadmodul, um betriebssystemabhängige Dateipfade korrekt zu behandeln. Unter Windows ähnelt der zurückgegebene Pfad C:\Users\michael\static\index.html, sodass wir uns nicht um die Verkettung der Pfade kümmern müssen. Abschließend implementieren wir einen Dateiserver file_server.js: „streng verwenden“; var fs = erforderlich('fs'),url = erforderlich('URL'),Pfad = erforderlich('Pfad'),http = erforderlich('http'); var root = path.resolve(process.argv[2] || '.'); // Stammverzeichnis aus den Kommandozeilenparametern abrufen, Standard ist das aktuelle Verzeichnis console.log('Statisches Stammverzeichnis: ' + root); var server = http.createServer(function (request, response){// Server erstellen var pathname = url.parse(request.url).pathname;// Pfad der URL abrufen, ähnlich wie „/css/bootstrap.css“ var filepath = path.join(root, pathname); // Den entsprechenden lokalen Dateipfad abrufen, ähnlich wie „/srv/www/css/bootstrap.css“ fs.stat(filepath, function (err, stats) {if (!err && stats.isFile()) {// Datei abrufen statusconsole.log('200 ' + request.url);// Kein Fehler und Datei vorhandenresponse.writeHead(200);// 200-Antwort senden// Dateistream zur Antwort weiterleiten: fs.createReadStream(Dateipfad).Pipe(Antwort); } anders { console.log('404 ' + request.url); // Fehler oder Datei existiert nicht response.writeHead(404); response.end('404 Nicht gefunden'); } }); }); // 404-Antwort senden server.listen(8080); console.log('Der Server läuft unter http://127.0.0.1:8080/'); Es ist nicht erforderlich, den Dateiinhalt manuell zu lesen. Da das Antwortobjekt selbst ein Writable Stream ist, kann mit der Methode pipe() der Dateiinhalt automatisch ausgelesen und in der HTTP-Antwort ausgegeben werden. Führen Sie node file_server.js /path/to/dir in der Befehlszeile aus, ändern Sie /path/to/dir in ein gültiges Verzeichnis auf Ihrem lokalen Computer und geben Sie dann http://localhost:8080/index.html in den Browser ein: Solange die Datei index.html im aktuellen Verzeichnis vorhanden ist, kann der Server den Dateiinhalt an den Browser senden. Beachten Sie die Konsolenausgabe:
Bei der ersten Anforderung fordert der Browser die Seite index.html an. Nachfolgende Anforderungen sind Anforderungen für andere Ressourcen, die der Browser nach der Analyse des HTML sendet. übenBei der Eingabe von http://localhost:8080/ im Browser wird die Fehlermeldung 404 zurückgegeben, da das Programm erkennt, dass es sich bei der HTTP-Anfrage nicht um eine Datei, sondern um ein Verzeichnis handelt. Bitte ändern Sie file_server.js. Wenn der angeforderte Pfad ein Verzeichnis ist, wird automatisch nacheinander nach index.html und default.html im Verzeichnis gesucht. Wenn diese gefunden werden, wird der Inhalt der HTML-Datei zurückgegeben. Referenzquellcode http-Servercode (einschließlich statischer Website) https://github.com/michaelliao/learn-javascript/tree/master/samples/node/http Oben wird die detaillierte Verwendung des http-Moduls von Node.js beschrieben. Weitere Informationen zu Node.js finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Detailliertes Tutorial zur Installation von ElasticSearch 6.x im Docker
>>: Detaillierte Erklärung der MySQL-Syntax, Sonderzeichen und regulären Ausdrücke
Inhaltsverzeichnis Offizielle Einführung in Node....
Batchkommentare in SQL Server Batch-Annotation St...
Wenn es um Datenbanken geht, ist eine der am häuf...
Einfach ausgedrückt besteht die verzögerte Replik...
Dieser Artikel beschreibt Ihnen, wie Sie MySQL 8....
In diesem Artikelbeispiel wird der spezifische Co...
Ziel dieses Artikels ist es, die Grundfunktionen ...
1. Installieren Sie Howdy: Howdy-Projektadresse s...
HTML-zentrierte Front-End-Entwicklung entspricht p...
Heute zeige ich Ihnen, wie Sie mit JavaScript ein...
1. js schützt hasOwnProperty nicht vor unrechtmäß...
Das Docker-Repository selbst ist sehr langsam, ab...
Inhaltsverzeichnis 1. Vorwort 2. Finden Sie zwei ...
Der Befehl „top“ ist der beste Befehl, den jeder ...
Inhaltsverzeichnis 1. Was ist Redux? 2. Das Redux...