Anfängerhandbuch für Node.js (serverseitiges JavaScript)
Node.js - in einfachen Worten - ist serverseitiges JavaScript. Es hat in diesen Tagen eine Menge Buzz bekommen. Wenn Sie davon gehört haben oder daran interessiert sind, etwas zu lernen und es in die Hände zu bekommen, ist dieser Beitrag für Sie.
Was genau ist also der Einsatz von JavaScript im Server? Um das Konzept von Node.js deutlich zu machen, möchte ich es mit den üblichen serverseitigen Sprachen wie PHP vergleichen. Node.js verwendet ein Ereignisbasierte Server-Ausführungsprozedur und nicht die Multithread-Ausführung in PHP.
Um es näher zu erläutern, sprechen wir über die Idee von Was ist Node.js? zusammen mit einigen Vorschläge für Hosting-Provider und Installationstipps. Vorkenntnisse in JavaScript, jQuery und Ajax sind erforderlich. Wir werden jedoch auch Beispiele für Sie bereitstellen, um die gesamte Sache einfacher zu verstehen und sogar daran zu arbeiten. Lassen Sie uns also mehr über Node.js erfahren!
Betrachten wir einen Fall:
Stellen Sie sich eine Website vor, auf der Sie Inhalte dynamisch von einem anderen Webserver laden müssen, was langsam ist. In PHP gibt es zwei Möglichkeiten - Codierung in einer einfachen Datei und Codierung als ein anderes Skript, dann Ausführung in einem Multithreading-Ansatz.
In der ersten Methode ist der Code zwar einfach die Ausführung pausiert eine Weile an dem Punkt, an dem auf den langsamen Webserver zugegriffen wird. Die zweite Methode ist im leistungsfall mehr optimiert Es ist jedoch schwer zu codieren und hat einen Multithread-Verwaltungsaufwand. Der Fall ist für die meisten anderen Web-Programmiersprachen ähnlich wie das serverseitige JavaScript, d. H. Node.js.
Was ist der Unterschied in Node.js?? Um Node.js zu verstehen, müssen Sie das beachten Die ereignisbasierte Programmierung von JavaScript im Browser. Wir verwenden hier die gleiche Technologie. Anstelle eines separaten Threads a Funktion ist an das Beendigungsereignis angehängt des “langsamer Zugriff auf den Webserver” oben erwähnt, also bekommst du die volle Funktionalität in der oben genannten optimierten zweiten Option ohne Multithread-Overhead.
Erste Schritte mit Node.js
Node.js ist JavaScript. Warum können wir die ereignisbasierte Funktionalität von JavaScript im Client nicht für einen Server nutzen? Dieser Gedanke könnte zur Entwicklung von Node.js geführt haben.
Das wichtigste Highlight von Node.js - Es handelt sich um ereignisbasierte asynchrone Funktionen. Es verwendet ein Ereignisschleife statt auf E / A-Vorgänge zu warten (Zugriff auf externen Webservice, Zugriff auf Hardware).
Node.js könnte noch nutzen Sie seine Rechenleistung wenn der Server auf einen anderen Vorgang wartet. Dies macht Node.js skalierbar zu Millionen gleichzeitiger Verbindungen.
Wie läuft JavaScript auf einem Server??
Node.js funktioniert in einer V8-Umgebung - es ist a virtuelle Maschine oder ein JavaScript-Engine Dadurch wird der JavaScript-Code ausgeführt, sodass Sie für das Hosting keine gewöhnlichen Web-Hosts verwenden können. Sie werden diejenigen brauchen, die die haben V8-Umgebung.
Hier einige Vorschläge für Anbieter für Node.js-Hosting:
- Wolkengießerei
- Cloudnode
- DotCloud
- Duostack
Node.js installieren
Knoten wird funktionieren perfekt auf Linux-, Macintosh- und Solaris-Betriebssystemen. Unter Windows können Sie es mit der Cygwin-Emulationsebene installieren. Keiner der Builds in Windows ist zufriedenstellend, aber es ist immer noch möglich, etwas zum Laufen zu bringen.
Option 1: Knoten aus Quelle erstellen.
Benutzen machen
Erstellen und Installieren von node.js (führen Sie Folgendes in der Befehlszeile aus). Git ist erforderlich.
git clone --depth 1 git: //github.com/joyent/node.git cd node git checkout v0.4.11 export JOBS = 2 mkdir ~ / local ./configure --prefix = $ HOME / local / node make make install echo 'export PATH = $ HOME / local / node / bin: $ PATH' >> ~ / .profile echo 'export NODE_PATH = $ HOME / local / node: $ HOME / lokal / node / lib / node_modules' >> ~ / .profile Quelle ~ / .profile
Option 2: Installation von Node.js aus Package
Für Mac-Benutzer können Sie Node.js als Paket von https://sites.google.com/site/nodejsmacosx/ installieren, was ziemlich selbsterklärend ist.
Testen der Knoteninstallation
Um Ihre erfolgreiche Node-Installation zu überprüfen, können Sie ein sehr einfaches Konsolenprogramm "Hello World" ausprobieren. Erstellen Sie eine Datei mit dem Namen "test.js"und schreiben Sie den folgenden Code hinein.
var sys = requir ("sys"); sys.puts ("Hallo Welt");
Code-Erklärung:
Es lädt die sys
Klasse in eine Variable sys
. Es verwendet dann die sys
Objekt, um die Konsolenaufgaben auszuführen. Das sys.puts
ist ein Befehl ähnlich dem cout
Um das Skript oben auszuführen, gehen Sie zur Eingabeaufforderung und führen Sie es mit dem folgenden Befehl aus:
Knoten test.js
Wenn Ihre Installation erfolgreich ist, wird eine Hallo Weltausgabe auf dem Bildschirm angezeigt.
HTTP-Server erstellen
Nun ist es an der Zeit, eine "Hello World" über den Webserver mit Node.js zu erstellen. Folgendes tun wir - wir Erstellen Sie einen Server, der a ausgibt “Hallo Welt” zum localhost am Port 8080 Egal was die URL ist, was Ihnen eine Idee gibt Veranstaltung ist.
Die Codes:
var sys = required ("sys"), mein_http = required ("http"); my_http.createServer (Funktion (Anforderung, Antwort) sys.puts ("Ich wurde getreten"); response.writeHeader (200, "Content-Type": "text / plain"); response.write ("Hallo Welt." "); response.end ();). listen (8080); sys.puts ("Server läuft auf 8080");
Code-Erklärung:
Der interessanteste Teil in Node.js ist die ereignisbasierte Programmierung. Um einen HTTP-Server zu erstellen, benötigen wir den HTTP-Bibliothek, Also gehen wir vor und fügen es mit ein my_http
. Wir erstellen Server durch die Funktion:
my_http.createServer (Funktion (Anforderung, Antwort) ). listen (8080);
Die als erstes Argument angegebene Funktion wird ausgeführt jedes Mal, wenn ein Ereignis in Port 8080 ausgelöst wird, also die Funktion selbst schlägt vor, dass der Knoten auf ein Ereignis in Port 8080 wartet. Um dies zu erkennen, habe ich a hinzugefügt “Ich wurde getreten” Nachricht, die auf dem Konsolenbildschirm angezeigt wird, wenn eine Anforderung empfangen wird.
Das anfordern
Objekt enthält alle Informationen zu der Anforderung, die an den Server gestellt wurde. Beispielsweise enthält es die URL-Zeichenfolge. Das Antwort
Objekt ist das Objekt das verarbeitet die Antwort vom Server. Zuerst setzen wir den Header der Antwort als text / plain
Inhalt, dann Ausgaben “Hallo Welt“, dann beenden Sie den Ausgabestrom. 200 ist die Statusantwort.
Das obige Beispiel ist ein sehr einfaches Beispiel, aber wir können sehen, dass die URL, die wir im Browser für denselben Server angeben, dieselbe Ausgabe liefert “Hallo Welt”.
Erstellen eines einfachen statischen Dateiservers
Im nächsten Tutorial erstellen wir einen einfachen statischen Dateiserver.
Die Codes:
var sys = required ("sys"), mein_http = required ("http"), pfad = required ("pfad"), url = required ("url"), filesys = required ("fs"); my_http.createServer (Funktion (Anforderung, Antwort) var my_path = url.parse (request.url). pathname; var full_path = path.join (process.cwd (), my_path); path.exists (full_path, function (existiert) ) if (! exists) response.writeHeader (404, "Content-Type": "text / plain"); response.write ("404 Not Found \ n"); response.end (); else filesys.readFile (vollständiger_Pfad, "binär", Funktion (err, file) if (err) antwort.writeHeader (500, "Inhaltstyp": "text / plain"); response.write (err + "\ n"); response.end (); else response.writeHeader (200); response.write (Datei, "binary"); response.end ();;;);). hör zu (8080); sys.puts ("Server läuft auf 8080");
Erklärung der Codes:
Der obige Code ist ziemlich einfach, wir werden ihn als Blöcke besprechen.
var sys = required ("sys"), mein_http = required ("http"), pfad = required ("pfad"), url = required ("url"), filesys = required ("fs");
Alle diese Bibliotheken werden für das Programm benötigt. Ihre Verwendung wird im folgenden Code klar sein.
var my_path = url.parse (request.url) .pathname; var full_path = path.join (process.cwd (), mein_pfad);
Das anfordern
Objekt hat die Anfragedetails, wie wir zuvor besprochen haben. Wir nehmen das analysieren
Funktion der URL-Klasse, die wir eingefügt haben, um die Pfadname
der Anforderungs-URL. Nachdem wir den Pfadnamen erhalten haben, verketten wir ihn mit dem Pfad des aktuellen Arbeitsverzeichnisses, um den vollständigen Pfad der Datei zu erhalten.
Um sich URLs anzuschließen, haben wir eine Funktion aufgerufen Beitreten
in der Pfadbibliothek.
path.exists (vollständiger_Pfad, Funktion (existiert)
Nachdem wir den vollständigen Pfad erhalten haben, überprüfen wir anhand der Funktion, ob der Pfad vorhanden ist existiert
. Nachdem die Prüfung abgeschlossen ist, wird die Callback-Funktion aufgerufen und als zweites Argument übergeben.
if (! existiert) response.writeHeader (404, "Content-Type": "text / plain"); response.write ("404 Not Found \ n"); response.end (); else filesys.readFile (vollständiger_Pfad, "binär", Funktion (err, file) if (err) response.writeHeader (500, "Inhaltstyp": "text / plain"); response.write ( err + "\ n"); response.end (); else response.writeHeader (200); response.write (Datei, "binary"); response.end ();;
Wenn die Datei nicht existiert, senden wir in der Rückruffunktion ein "404 Seite nicht gefunden" Error.
Wenn die Seite gefunden wird, lesen wir die Datei über die readFile
Funktion im Dateisystem. Wir können auch die Rückruffunktion für die sehen readFile
Funktion dort selbst definiert. Wenn beim Lesen der Datei kein Fehler auftritt, wird diese angezeigt. Wenn ein Fehler vorliegt, wird ein Status 500 mit dem Fehlertext zurückgegeben.
Ich empfehle außerdem, die Codes des vorherigen Tutorials in eine Funktion zu packen, damit Sie sie im nächsten Tutorial oder für die zukünftige Verwendung verwenden können.
var sys = required ("sys"), mein_http = required ("http"), pfad = required ("pfad"), url = required ("url"), filesys = required ("fs"); my_http.createServer (Funktion (Anforderung, Antwort) var my_path = url.parse (request.url). pathname; var full_path = path.join (process.cwd (), my_path); path.exists (full_path, function (existiert) ) if (! exists) response.writeHeader (404, "Content-Type": "text / plain"); response.write ("404 Not Found \ n"); response.end (); else filesys.readFile (vollständiger_Pfad, "binär", Funktion (err, file) if (err) antwort.writeHeader (500, "Inhaltstyp": "text / plain"); response.write (err + "\ n"); response.end (); else response.writeHeader (200); response.write (Datei, "binary"); response.end ();;;) my_http. createServer (Funktion (Anfrage, Antwort) var my_path = url.parse (request.url) .pathname; load_file (my_path, response);). listen (8080); sys.puts ("Server läuft auf 8080");
Bleib dran !
Das ist alles. Ich hoffe, das gibt Ihnen eine gute Vorstellung von Node.js. Im nächsten Artikel zeige ich Ihnen, wie es geht Laden und Anzeigen der Anzahl der Facebook-Likes mit Node.js. Bleib dran!
Anmerkung des Herausgebers: Dieser Beitrag wird von geschrieben Geo Paul für Hongkiat.com. Geo ist ein unabhängiger Web- / iPhone-Entwickler, der gerne mit PHP, Codeigniter, WordPress, jQuery und Ajax arbeitet. Er hat 4 Jahre Erfahrung in PHP und 2 Jahre Erfahrung in der Entwicklung von IniPhone-Anwendungen.