Die Hauptanwendung von Node.js ist die Serverprogrammierung.
Einer der Hauptzwecke beim Entwurf von Node.js besteht darin, eine hoch skalierbare Serverumgebung bereitzustellen. Dies ist der Unterschied zwischen den Node- und V8-Motoren, die wir zu Beginn dieses Kapitels vorgestellt haben. Neben der Verwendung der V8-Engine zum Parsen von JavaScript bietet Node auch hochoptimierte Anwendungsbibliotheken zur Verbesserung der Servereffizienz. Beispielsweise wurde das HTTP-Modul in C speziell für einen schnellen, nicht blockierenden HTTP-Server neu geschrieben. Schauen wir uns das klassische „Hello World“-Beispiel an, bei dem Node einen HTTP-Server verwendet
/*Server erstellen*/
var server=http.createServer(function(req,res){ res.writeHead(200,{"Content-type":'text/html'}); res.end('hello world'); });
/*Überwachung von IP und Port*/
server.listen(8124,'127.0.0.1',function(){ console.log('服务器创建成成功:127.0.0.1:8124'); });
Der laufende Code lautet wie folgt
ZXD@ZXD-PC /K/work/learn/nodejs/cvs01 $ node app
Server erfolgreich erstellt: 127.0.0.1:8124
Dieser Beispielcode bindet zunächst die HTTP-Bibliothek über die Methode require in das Programm ein. Viele Sprachen haben diesen Ansatz, andere Bibliotheken einzubinden, Node verwendet den CommonJS-Modulstil.
Was Sie jetzt verstehen müssen, ist, dass die Funktionen der HTTP-Bibliothek dem http-Objekt zugewiesen wurden.
Als nächstes benötigen wir einen HTTP-Server. Andere Sprachen wie PHP müssen auf einem Server wie Apache ausgeführt werden, aber Node unterscheidet sich von diesen, da Node selbst ein Webserver ist.
Das bedeutet aber auch, dass wir zuerst den Server erstellen müssen. Die nächste Codezeile ruft eine Factory-Pattern-Methode des HTTP-Moduls auf
(createServer), um einen neuen HTTP-Server zu erstellen. Dem neu erstellten HTTP-Server werden keine Variablen zugewiesen, er wird lediglich zu einem anonymen Objekt, das im globalen Bereich lebt.
Wir können den Server durch Kettenaufrufe initialisieren und ihn anweisen, Port 8124 abzuhören. Beim Aufruf von createServer übergeben wir eine anonyme Funktion als Parameter. Diese Funktion ist zur Verarbeitung von Anforderungsereignissen an den Ereignis-Listener des neu erstellten Servers gebunden. Nachrichtenereignisse sind das Herzstück von JavaScript und Node. In diesem Beispiel ruft dieser jedes Mal, wenn eine neue Zugriffsanforderung beim Webserver eintrifft, die Funktionsmethode auf, die wir für die Verarbeitung angegeben haben. Wir nennen diese Art von Methode einen Callback. Denn wann immer ein Ereignis eintritt, rufen wir alle Funktionen zurück, die dieses Ereignis abhören.
Beispiel 2:
Da Sie in eine andere Stadt reisen und keinen Computer zur Hand haben, kann das Dom-Framework nicht wie geplant veröffentlicht werden. Nutzen Sie also die Gelegenheit, etwas Neues zu lernen. Der dringendste Bedarf in dieser Zeit bestand darin, ein ultraleichtes Backend zum Einrichten meines Frameworks zu finden, also griff ich auf das legendäre serverseitige Javascrpt zurück. Das bekannteste Back-End-JS ist zweifellos node.js von Ryan Dahl und das andere ist jaxer, produziert vom IDE-Anbieter Aptana.
Laden Sie zuerst node.js herunter, entpacken Sie es dann auf das Laufwerk E, benennen Sie es in node um, geben Sie dann cmd in das Startmenü ein und wechseln Sie mit dem Befehl cd zum Dekomprimierungsverzeichnis von nodejs:
Erstes Beispiel: Hallo Welt.
Erstellen Sie die Datei hello.js im Knotenverzeichnis und geben Sie dann Folgendes ein:
var sys = require("sys"); sys.puts("Hello world");
Dann geben wir den Befehlsknoten hello.js in die Namensplattform ein und können die Ausgabe der Namensplattform „Hallo Welt“ sehen.
Zweites Beispiel: Hallo Welt2.
Okay, dieses Mal versuchen wir, „Hallo Welt“ aus dem Browser auszugeben. Erstellen Sie http.js im Knotenverzeichnis und geben Sie Folgendes ein:
var sys = require("sys"), http = require("http"); http.createServer(function(request, response) { response.sendHeader(200, {"Content-Type": "text/html"}); response.write("Hello World!"); response.close(); }).listen(8080); sys.puts("Server running at http://localhost:8080/");
Dann geben wir den Befehlsknoten http.js in der Namensplattform und http://localhost:8080/
im Browser einDas dritte Beispiel: Hallo Welt2.
node.js bietet eine Buffer-Klasse zum Konvertieren von Zeichenfolgen unterschiedlicher Codierungen.
Unterstützt derzeit drei Typen: „ASCII“, „UTF8“ und „Binär“. Weitere Informationen finden Sie hier
var Buffer = require('buffer').Buffer, buf = new Buffer(256), len = buf.write('\u00bd + \u00bc = \u00be', 0); console.log(len + " bytes: " + buf.toString('utf8', 0, len));
Das vierte Beispiel: hello world3.
//synopsis.js //synopsis 摘要, 梗概,大纲 var http = require('http'); http.createServer(function (request, response) { response.writeHead(200, {'Content-Type': 'text/plain'}); response.end('Hello World\n'); }).listen(8124); console.log('Server running at http://127.0.0.1:8124/');