Heim > Web-Frontend > js-Tutorial > Detaillierte Erläuterung des HTTP-Moduls und des Ereignismoduls in Node.js_node.js

Detaillierte Erläuterung des HTTP-Moduls und des Ereignismoduls in Node.js_node.js

WBOY
Freigeben: 2016-05-16 16:31:18
Original
1562 Leute haben es durchsucht

Node.js http-Server

Node.js ermöglicht uns die Erstellung von Servern und Clients mithilfe der Low-Level-API des HTTP-Moduls. Als wir zum ersten Mal mit dem Erlernen von Node begannen, stießen wir alle auf den folgenden Code:

Code kopieren Der Code lautet wie folgt:

var http = require('http');
http.createServer(function (req,res) {
res.end('Hello Worldn');
}).listen(3000,"127.0.0.1");
console.log("Server funning at http://127.0.0.1:3000");

Dieser Code enthält Informationen zum http-Modul, was bedeutet:

1. Fordern Sie das HTTP-Modul vom Kern von „Node.js“ an und weisen Sie es einer Variablen zur Verwendung in zukünftigen Skripten zu.
Das Skript hat dann über „Node.js“ Zugriff auf Methoden zur Verwendung von „HTTP“.

2. Verwenden Sie „createServer“, um ein neues Webserverobjekt zu erstellen

3. Das Skript übergibt eine anonyme Funktion an den Server, die dem Webserver-Objekt mitteilt, was passieren soll, wenn es eine Anfrage erhält

4. Zeile 4 des Skripts definiert den Port und Host des Webservers, was bedeutet, dass Sie „http://127.0.0.1:3000“ verwenden können
um auf den Server zuzugreifen

Http-Header

Für jede HTTP-Anfrage und -Antwort wird ein HTTP-Header gesendet. Der HTTP-Header sendet zusätzliche Informationen, einschließlich des Inhaltstyps, des Datums, an dem der Server die Antwort gesendet hat, und des HTTP-Statuscodes

Der http-Header enthält viele Informationen. Das Folgende sind die http-Header-Informationen, die auf meiner Baidu-Homepage enthalten sind:

Da ich meiner Baidu-Homepage weitere Websites hinzugefügt habe, können die Daten hier von denen der Leser abweichen. Daraus können wir ersehen, dass der Webserver von Baidu BWS/1.1 ist

Das Folgende sind die http-Header-Informationen des obigen Codes:

Weiterleitungen in Node.js

In Node können wir ganz einfach einen einfachen Server erstellen, um Besucher auf eine andere Webseite umzuleiten. Die Richtlinien lauten wie folgt:

1. Senden Sie einen 301-Antwortcode an den Kunden, um ihm mitzuteilen, dass die Ressource an einen anderen Standort verschoben wurde 2. Senden Sie einen Standortheader, um dem Client mitzuteilen, wohin er umgeleitet werden soll.

Der relevante Code lautet wie folgt:

Code kopieren Der Code lautet wie folgt:
var http = require('http');
http.createServer(function (req,res) {
res.writeHead(301,{
         'Standort':'Http://example-2.com/web'
});
res.end();
}).listen(3000,'127.0.0.1');
console.log("Server funning at
http://127.0.0.1:3000");
Öffnen Sie den Browser und besuchen Sie

http://127.0.0.1:3000Die Seite wird umgeleitet.

Reagieren Sie auf verschiedene Anfragen

Node.js kann nicht nur eine einzelne Antwort erstellen, sondern für mehrere Arten von Anforderungen müssen wir der Anwendung einige Routen hinzufügen. Node vereinfacht dies mithilfe des URL-Moduls. Das URL-Modul ermöglicht es uns, eine URL zu lesen, sie zu analysieren und dann etwas mit der Ausgabe zu tun.

Code kopieren Der Code lautet wie folgt:
var url = require('url');
var requestURL = "
http://example.com:1234/path?query=string#hash"
Jetzt können wir die angeforderte URL analysieren und Inhalte daraus extrahieren, um beispielsweise den Hostnamen zu erhalten, den wir eingeben können:

Code kopieren Der Code lautet wie folgt:
url.parse(requestURL).hostname

Zu diesem Zeitpunkt kehrt er zu „example.com“ zurück

Um die Portnummer zu erhalten, können Sie Folgendes eingeben:

Code kopieren Der Code lautet wie folgt:
url.parse(requestURL).port


Er wird „1234“ zurückgeben

Event-Modul

Node.js gilt als der beste Weg, um Parallelität zu erreichen. Das Events-Modul ist der Kern von Node.js und wird von vielen anderen Modulen verwendet, um Funktionen rund um Events zu entwickeln. Da Node.js in einem einzelnen Thread ausgeführt wird, blockiert jeglicher Synchronisierungscode. Daher müssen wir beim Schreiben von Node.js-Code einige einfache Regeln berücksichtigen:

1. Nicht blockieren – „Node.js“ ist Single-Threaded, wenn der Code alles andere blockiert, stoppt
2. Schnelle Rückkehr – Der Betrieb sollte schnell zurückkehren. Wenn es nicht schnell zurückkehren kann, sollte es in einen anderen Prozess verschoben werden
Mit dem Modul „Events“ können Entwickler Listener und Handler für Ereignisse einrichten. In Client-JS können wir einen Listener für das Klickereignis festlegen und dann etwas tun, wenn das Ereignis auftritt:

Code kopieren Der Code lautet wie folgt:

var tar = document.getElementById("target");
tar.addEventListener("click", function () {
Alert("Klickereignis ausgelöst, Ziel wurde angeklickt"); },false);

Dies ist natürlich ein Beispiel ohne Berücksichtigung der IE-Kompatibilität. Die wichtigsten Ereignisse von Node.j sind häufiger Netzwerkereignisse, darunter:

1. Antwort vom Webserver

2. Daten aus der Datei lesen
3. Daten aus der Datenbank zurückgeben
Um das Events-Modul verwenden zu können, müssen wir zunächst eine neue EventEmitter-Instanz erstellen:

Code kopieren Der Code lautet wie folgt:
var EventEmitter= require('events').EventEmitter;
var test = new EventEmitter();

Sobald Sie den oben genannten Inhalt zum Code hinzugefügt haben, können Sie Ereignisse und Listener wie folgt hinzufügen:

Code kopieren Der Code lautet wie folgt:
test.emit('msg','die vom Knoten gesendete Nachricht');

Der erste Parameter ist eine Zeichenfolge, die das Ereignis beschreibt, sodass es für den Listener-Abgleich verwendet werden kann

Um Nachrichten zu empfangen, müssen Sie einen Listener hinzufügen, der das Ereignis verarbeitet, wenn es ausgelöst wird, zum Beispiel:

Code kopieren Der Code lautet wie folgt:
test.on('message',function(data){
console.log(data);
});

Das Modul „Events“ implementiert grundlegende Methoden für den Ereignisüberwachungsmodus wie „addListener/on“, „once“, „removeListener“, „removeAllListeners“ und „emit“. Es ist nicht dasselbe wie die Ereignisse im Front-End-DOM-Baum, da es kein zum DOM gehörendes Ereignisverhalten wie Bubbling und Layer-by-Layer-Erfassung aufweist und es keine Methoden zur Verarbeitung der Ereignisübermittlung wie PreventDefault gibt (), stopPropagation(), stopImmediatePropagation() usw.

1. Klasse: events.EventEmitter: Erhalten Sie die EventEmitter-Klasse über require('events').EventEmitter.

2.emitter.on(event, listener): Fügen Sie am Ende des Listener-Arrays einen Listener für ein bestimmtes Ereignis hinzu. Geben Sie den Emitter zurück, um Kettenaufrufe zu erleichtern, siehe unten.

3.emitter.removeListener(event, listener) entfernt einen Listener aus dem Listener-Array eines Ereignisses

4.emitter.listeners(event) gibt das Listener-Array des angegebenen Ereignisses zurück

Weitere Einzelheiten finden Sie in der Node.js-API-Dokumentation

Der folgende Code zeigt eine vertrauliche Nachricht, die sich in 5 Sekunden selbst zerstören kann:

Code kopieren Der Code lautet wie folgt:
var EventEmitter = require('events').EventEmitter;
var SecretMessage = new EventEmitter();
secretMessage.on('message', function (data) {

console.log(data);
});

secretMessage.on('self destruct', function () {

console.log('die Nachricht ist zerstört!');
});

secretMessage.emit('message','das ist eine geheime Nachricht. Sie wird sich in 5 Sekunden selbst zerstören');

setTimeout(function () {

SecretMessage.emit('self destruct');
},5000);

In diesem Skript werden zwei Ereignisse gesendet und es gibt zwei Listener. Wenn das Skript ausgeführt wird, treten Nachrichtenereignisse auf und werden vom „message“-Handler

verarbeitet

EventEmitter wird überall in Node.js verwendet, daher ist es wichtig, es zu beherrschen. Node.js ruft Daten durch E/A-Vorgänge ab und nutzt in großem Umfang das Ereignismodul, um die asynchrone Programmierung zu unterstützen

FAQ:

F: Gibt es eine Begrenzung für die maximale Anzahl von Zuhörern für eine Veranstaltung?
Antwort: Wenn ein Ereignis von 10 Listenern bearbeitet wird, wird standardmäßig eine Warnung ausgegeben. Diese Zahl kann jedoch mit emitter.setMaxListener(n)

geändert werden

F: Ist es möglich, alle gesendeten Ereignisse abzuhören?
Antwort: Nein. Wir müssen Zuhörer für jedes Ereignis erstellen, auf das wir reagieren möchten

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