1. Installation
Gehen Sie zuerst zu http://nodejs.org, um herunterzuladen und zu installieren. Die Version, die ich unten bin, ist 0,8.14. Die Installation ist sehr einfach, der nächste Schritt kommt als nächstes. Konfigurieren Sie dann das Installationsverzeichnis im Pfad, und MSI installiert NPM (Node Package Manager) zusammen.
Mein Installationsverzeichnis ist C:/Programmdateien (x86)/NodeJS. Verwenden Sie zu diesem Zeitpunkt den Befehl CMD -Befehlsfenster node -v und npm -v um die installierte Version unter dem Befehl npm -v anzuzeigen
1.1. HelloWorld
Erstellen Sie eine neue Datei Hello.js im Projektverzeichnis node.js und geben Sie eine Codezeile darin ein
console.log ('Hallo, nodejs.');Geben Sie die Befehlszeilenkonsole ein, geben Sie das Projektverzeichnis node.js ein und geben Sie Knoten hello.js ein
Die Konsole gibt "Hallo, Nodejs" aus.
1.2. Webversion von HelloWorld
Erstellen Sie ein neues http.js im Node.js -Projektverzeichnis, der Code ist wie folgt
var http = required ("http");Starten Sie den Dienst in der Befehlszeile und klicken Sie auf den Knoten http.js
Öffnen Sie dann die Browser -Adressleiste und geben Sie http: // localhost: 8000/ein und sehen Sie Hello World! Ausgabe auf der Seite und es ist erfolgreich.
Die Version von node.js muss mit der API synchronisiert werden
Die Versionsnummer von node.js ist regelmäßig, sogar Version ist eine stabile Version, eine ungerade Version ist eine nicht stabile Version
2 HelloWorld Code Analyse
OK, analysieren Sie von nun an unsere HelloWorld -Linie.
Module einführen
var http = required ("http");Mit der Erforderungsmethode wird ein Modul eingeführt, und der Parameter ist der Name des Moduls. Zum Beispiel kann das Dateisystemmodul wie folgt eingeführt werden:
var fs = require ("fs");Wir können die Request () -Methode als globale Methode verwenden, aber tatsächlich ähnelt es einer lokalen Methode, die zu einem bestimmten Modul gehört. Seine Dokumentation ist hier: https://nodejs.org/api/globals.html.
Die erforderliche Methode gibt eine Instanz eines bestimmten Moduls zurück, z. B. erfordert ("http") eine HTTP -Instanz. Die Referenzdokumentation für HTTP -Instanzen ist hier: https://nodejs.org/api/http.html.
Wir sehen, dass das HTTP -Modul über eine Methode erstellt wird, die unsere zweite Codezeile betrifft.
Erstellen Sie einen Server
Die Methode createServer () des HTTP -Moduls akzeptiert eine Methode als Parameter, und der Prototyp ist:
http.createServer ([RequestListener])
RequestListener ist eine Methode, die dem Anforderungsereignis der HTTP.Server -Klasse zugeordnet ist. Wenn die Client -Anfrage eintrifft, wird der RequestListener auf diese Weise aufgerufen.
RequestListener hat zwei Parameter, und der Funktionsprototyp lautet wie folgt:
Funktion (Anfrage, Antwort) {} Der Typ der ersten Parameteranforderung ist http.IncomingMessage , die die Readable Stream -Schnittstelle implementiert.
Der Typ des zweiten Parameters ist http.ServerResponse , der die Writeable Stream -Schnittstelle implementiert.
Die Stream -API ist hier: https://nodejs.org/api/stream.html. Gleichzeitig sind Anfrage und Antwort Eventemitter, die bestimmte Ereignisse ausgeben können.
Die EventEmitter -API ist hier: https://nodejs.org/api/events.html#events_class_events_eventemitter. Später werden wir darüber sprechen, wie EventEmitter mithilfe von Events -Ereignissen eingesetzt und verarbeitet werden kann.
Lassen Sie uns den Code überprüfen, den wir den Server erstellt haben:
http.createServer (function (request, response) {response.writeHead (200, {"content-type": "text/plain"}); Antwort.Write ("Hallo Welt!"); Antwort ();}). Hören (8000);http.createServer gibt eine http.server -Instanz zurück. Mit der Hörenmethode von http.server kann der Server einen bestimmten Port anhören, der im Beispiel 8000 beträgt.
Wie Sie sehen können, bieten wir eine anonyme Funktion für die Erstellungsmethode. In dieser Methode schreiben wir die "Hallo Welt!" Nachricht an den Client über den Antwortparameter.
Analyse von Client -Anfragen
Wir haben die HTTP.CreateServer -Methode früher analysiert. Seine Parameter sind eine Methode mit zwei Parametern. Einer stellt die vom Client gesendete Anfrage aus und die andere repräsentiert die Antwort, um an den Client zurückzuschreiben. Schauen wir uns die Anfrageparameter an.
Anfrage ist eine Instanz von http.IncomingMessage . In dieser Instanz können wir die Anforderungsparameter wie HTTP -Methode, HTTP -Version, URL, Header usw. erhalten.
Lassen Sie uns einen Blick darauf werfen, indem wir HelloWorld.js modifizieren (helloWorld2.js). Der Code ist wie folgt:
// HTTP -Modul var http = require ("http") einführen; // Erstellen Sie einen Server, der die Funktion angibt, die die Client -Anforderungen http.createServer (Funktion (Anfrage, Antwort) {console.log ("Methode -" + request.method); console.log ("Version -" + + Request.httpversion); console.log ("url -" + request.url). "TEXT"}); console.log ("Hello World Start Hören Sie auf Port 8000");Wie Sie sehen können, habe ich das Konsolenobjekt verwendet, um einige Debugging -Informationen und die gedruckte HTTP -Methode, Version, URL und andere Informationen auszugeben. Sie können Node HelloWorld2.js ausführen, der Browser besucht http: // localhost: 8000, und rennen dann zur Befehlszeile, um zu sehen, welche Informationen ausgegeben werden. Ich bin so:
Unsere einfache HelloWorld kann bereits einige Antwortdaten an den Kunden senden, und Sie können die Wörter "Hallo Welt!" Sehen. in deinem Browser. Diese Antwort wird über eine response von http.ServerResponse an den Client gesendet.
http.ServerResponse ist auch ein Stream oder EventEmitter. Dadurch geben wir den HTTP -Statuscode, Daten, HTTP -Header und andere Informationen an den Client zurück.
HTTP -Modul
Im HTTP -Modul von node.js wird die Statuszeile über die Recordhead -Methode von http.serverresponse an den Client geschrieben. Der Prototyp der Schreibkopfmethode lautet wie folgt:
Antwort.WriteHead (Statuscode [, StatusMessage] [, Header])
Der erste Parameter dieser Methode ist der Statuscode, das eine Zahl wie 200 und 403 entspricht. Die verbleibenden Parameter sind optional. Der letzte Parameter sind Header, bei denen Sie JSON-Objektnotation verwenden können, um einige HTTP-Header wie: {“Content-Type”:”text/plain”,”Content-Length”:11} zu schreiben. Die erste optionale Parameterstatusmessage wird verwendet, um eine Statusbeschreibungsmeldung anzugeben, die nicht ausgefüllt werden kann.
HTTP -Header
Der Header ist einige Schlüsselwertpaare. Beispielsweise ist das in HelloWorld angezeigte "Inhaltstyp" das Header-Tag, mit dem der Datentyp angezeigt wird, der möglicherweise Textdateien, Bildern, Videos, Binärdateien usw. entspricht. In ähnlicher Weise wird "Inhaltslänge" verwendet, um die Datenlänge anzugeben. Es gibt noch viele weitere, wie "Datum", "Verbindung" usw. Bitte beachten Sie den vorherigen Link.
Der Header kann auch separat unter Verwendung der response.setHeader(name, value) eingestellt werden.
Daten
Nach dem Header gibt es Daten. Einige Statuscodes wie 200 werden in Zukunft einige Daten haben. Und einige, wie 301, 404, 403, 500, haben die meisten keine Daten.
Die Daten werden über die Schreibmethode von http.serverresponse zum Client zurückgeschrieben, zum Beispiel:
response.setheader ("Inhaltstyp", "text/html");Hier müssen wir erwähnen, dass es zwei gängige HTTP -Datenübertragungs -Codierungsmethoden gibt:
Legen Sie die Inhaltslänge ein, übertragen Sie Daten mit fester Länge und setzen
Wie unser aktuelles Beispiel für HelloWorld, ohne den Header inhaltslanger Länge festzulegen, standardt das HTTP-Modul von Node.js standardmäßig zu Chunked Coding.
Wir verwenden die Entwicklertools von Chrome Browser, um Netzwerkdaten anzuzeigen, was deutlich zu sehen ist. Wie in der Abbildung unten gezeigt:
HTTP -Antwort
Die drei Punkte, die ich markiert habe, sind alle HTTP -Headerinformationen, die vom Beispiel von HelloWorld an den Browser übergeben wurden.
Wir schreiben Daten über die Schreibmethode von http.serverresponse an den Client. Sie können alle Daten gleichzeitig schreiben oder die Daten mehrmals und mehrmals schreiben. Wenn die zu übertragende Datenmenge groß ist, ist das mehrmalige Schreiben ein vernünftigerer Ansatz. Wenn Sie beispielsweise eine große Datei an den Client senden, eignet sie sich besser für das Schreiben. Sie können auch die asynchrone Funktion von Node.js verwenden, um eine gute Leistung zu erzielen.