Node.js http Server
Mit Node.js können wir Server und Clients erstellen, indem wir die Low-Level-API des HTTP-Moduls verwenden. Als wir anfingen, Knoten zu lernen, stießen wir alle auf den folgenden Code:
Die Codekopie lautet wie folgt:
var http = required ('http');
http.createServer (Funktion (req, res) {{
res.end ('Hello World/n');
}). Hören (3000, "127.0.0.1");
console.log ("Server, der unter http://127.0.0.1:3000");
Dieser Code enthält Informationen zum HTTP -Modul, was bedeutet:
1. Fordern Sie das HTTP -Modul aus dem Kern von `node.js` an und weisen Sie eine Variable zu, die Sie in zukünftigen Skripten verwenden können.
Das Skript kann auf einige Methoden zugreifen, um HTTP über `node.js` zu verwenden.
2. Erstellen Sie ein neues Webserverobjekt mit `createServer`
3. Das Skript übergibt eine anonyme Funktion an den Server, in dem das Webserverobjekt mitteilt, was passiert, wenn es eine Anforderung empfängt
4. Die Skriptzeile 4 definiert den Port und den Host des Webservers, was bedeutet, dass `http: //127.0.0.1: 3000` verwendet werden kann
Besuchen Sie den Server
HTTP -Header
Für jede HTTP -Anforderung und -Anforderung wird ein HTTP -Header gesendet. Der HTTP -Header sendet zusätzliche Informationen, einschließlich des Inhaltstyps, das Datum, an dem der Server die Antwort gesendet hat, und den HTTP -Statuscode
Der HTTP -Header enthält viele Informationen. Im Folgenden sind die Informationen über den HTTP -Header in meiner Baidu -Homepage enthalten:
Da ich meiner Baidu -Homepage mehr Websites hinzugefügt habe, können sich die Daten hier von denen der Leser unterscheiden. Daraus können wir sehen, dass Baidu ein Webserver und BWS/1.1 ist
Unten finden Sie die HTTP -Headerinformationen des oben genannten Codes gerade:
Umleitung in Node.js
Im Knoten können wir problemlos einen einfachen Server erstellen, um Besucher mit den folgenden Richtlinien auf eine andere Webseite umzuleiten:
1. Senden Sie einen 301 -Antwortcode an den Kunden, in dem der Kunden mitgeteilt wird, dass die Ressource an einen anderen Ort verschoben wurde.
2. Senden Sie einen Standort -Header, um dem Kunden mitzuteilen, wo er umleiten soll.
Die relevanten Codes sind wie folgt:
Die Codekopie lautet wie folgt:
var http = required ('http');
http.createServer (Funktion (req, res) {{
res.writeHead (301, {
'Ort': 'http: //example-2.com/web'
});
res.end ();
}). Hören (3000, '127.0.0.1');
console.log ("Server, der unter http://127.0.0.1:3000");
Öffnen Sie den Browser und besuchen Sie die Seite http://127.0.0.1:3000 wird umgeleitet.
Auf verschiedene Anfragen antworten
Node.js kann nicht nur eine einzige Antwort erstellen, sondern für mehrere Arten von Anforderungen müssen wir der Anwendung einige Routen hinzufügen. Der Knoten macht dies durch die Verwendung von URL -Modulen unkompliziert. Das URL -Modul ermöglicht es uns, die URL zu lesen, sie zu analysieren und dann etwas mit der Ausgabe zu tun.
Die Codekopie lautet wie folgt:
var url = erfordern ('url');
var requesturl = "http://example.com:1234/path?query=string#hash"
Jetzt können wir die angeforderte URL analysieren und den Inhalt daraus schneiden, um den Hostnamen zu erhalten, können wir eingeben:
Die Codekopie lautet wie folgt:
url.parse (Requesturl) .HOSTNAME
Zu diesem Zeitpunkt wird er zu "example.com" zurückkehren
Um die Portnummer zu erhalten, können Sie eingeben:
Die Codekopie lautet wie folgt:
url.parse (requesturl) .port
Er wird zu "1234" zurückkehren
Ereignismodul
Node.js gilt als der beste Weg, um Parallelität zu erreichen. Das Ereignismodul ist der Kern von Node.js, und viele andere Module verwenden es, um Event -Architekturfunktionen zu umgeben. Da Node.js in einem einzelnen Thread ausgeführt wird, wird jeder synchrone Code blockiert. Beim Schreiben von Node.js -Code müssen wir daher einige einfache Regeln berücksichtigen:
1. Block nicht - `node.js` ist ein einzelnes Thread, und wenn der Code blockiert, stoppt alles andere
2. Schnelle Rückgabe - Der Vorgang sollte schnell zurückkehren. Wenn Sie nicht schnell zurückkehren können, sollten Sie es in einen anderen Prozess migrieren
Mit dem Ereignismodul können Entwickler Hörer und Prozessoren für Ereignisse einrichten. Im Client JS können wir einen Listener für das Click -Ereignis festlegen und dann etwas tun, wenn das Ereignis auftritt:
Die Codekopie lautet wie folgt:
var tar = document.getElementById ("Ziel");
tar.addeventListener ("click", function () {
ALERT ("Klicken Sie auf Ereignis, das auf das Ziel geklickt wurde");
},FALSCH);
Dies ist natürlich ein Beispiel, ohne die IE -Kompatibilität zu berücksichtigen, und die Node.js -Fokusereignisse treten bei Netzwerkereignissen häufiger auf, darunter:
1. Antwort vom Webserver
2. Lesen Sie Daten aus der Datei
3. Rückgeben Sie Daten aus der Datenbank
Mit dem Ereignismodul müssen wir zunächst eine neue Eventemitter -Instanz erstellen:
Die Codekopie lautet wie folgt:
var eventEmitter = required ('events'). eventEmitter;
var test = new eventEmitter ();
Sobald der obige Inhalt dem Code hinzugefügt wurde, können Sie Ereignisse und Hörer hinzufügen. Wir können Ereignisse wie folgt senden, z. B.:
Die Codekopie lautet wie folgt:
test.emit ('msg', 'die Nachricht per Knoten senden');
Der erste Parameter ist eine Zeichenfolge, die das Ereignis so beschreibt, dass es für die Übereinstimmung des Hörers verwendet werden kann
Um eine Nachricht zu erhalten, muss ein Hörer hinzugefügt werden, der sie beispielsweise mit dem Ereignis ausgelöst wird:
Die Codekopie lautet wie folgt:
test.on ('message', function (data) {
console.log (Daten);
});
Die Implementierung von Ereignis -Hörmodus von Ereignismodulemodul addierener/on, einmal, Removelistener, RemoveAlllisteners, Emit und andere grundlegende Ereignishörmodi. Es ist nicht dasselbe wie die Ereignisse am Front-End-DOM-Baum, da es keine Ereignisverhalten hat, die zum DOM gehören, wie Blasen, Schicht für Schicht-Erfassung, und es gibt keine Möglichkeit, Ereignisbereitstellung wie PreventDefault (), StopPropagation (), StopiMediatePropagation () usw. zu verarbeiten, usw.
1.Class: events.eventemitter: Holen Sie sich die EventEmitter -Klasse durch Request ('Events'). Eventemitter.
2.Emitter.on (Ereignis, Hörer): Fügen Sie einen Hörer zum Schwanz des Listener -Arrays eines bestimmten Ereignisses hinzu. Kehren Sie zum Emitter zurück, erleichtern Sie den Kettenanruf, das gleiche unten.
3.Emitter.Removelistener (Event, Listener) löscht einen Hörer aus der Hörer -Reihe eines Ereignisses
4.Emitter.Listeners (Ereignis) gibt das Listener -Array des angegebenen Ereignisses zurück
Weitere Informationen finden Sie in der Dokumentation von Node.js API
Der folgende Code zeigt eine vertrauliche Nachricht, die sich innerhalb von 5 Sekunden selbst zerstören kann:
Die Codekopie lautet wie folgt:
var eventEmitter = required ('events'). eventEmitter;
var secryMessage = new eventEmitter ();
SecretMessage.on ('Nachricht', Funktion (Daten) {
console.log (Daten);
});
SecretMessage.on ('Self Destruct', Function () {
console.log ('die msg wird zerstört!');
});
SecretMessage.Emit ('Nachricht', 'Dies ist eine geheime Botschaft. Es wird sich in 5s selbst todieren');
setTimeout (function () {
SecretMessage.Emit ('Self Destruct');
}, 5000);
In diesem Skript werden zwei Ereignisse mit zwei Hörern gesendet. Wenn das Skript ausgeführt wird, erfolgt das Nachrichtenereignis und wird vom Prozessor "Nachricht" verarbeitet
EventEmitter wird überall in node.js verwendet, daher ist es wichtig, es zu meistern. Node.js erhält Daten über E/A -Operationen und verwendet das Ereignismodul weitgehend, um die asynchrone Programmierung zu unterstützen
FAQ:
F: Gibt es eine Grenze für die maximale Anzahl von Hörern für ein Ereignis?
A: Wenn das Ereignis 10 Hörer in Betrieb ist, wird eine Warnung ausgegeben. Sie können jedoch Emitter.SetMaxListener (N) verwenden, um diese Menge zu ändern
F: Kann ich alle gesendeten Ereignisse hören?
Antwort: Nein. Wir müssen für jedes Ereignis, auf das wir antworten möchten, einen Hörer erstellen