Auf der JSConf-Konferenz im Jahr 2009 zeigte ein junger Programmierer namens Ryan Dahl den Leuten ein Projekt, an dem er arbeitete, eine JavaScript-Laufplattform basierend auf der Google V8-Engine, die eine Reihe von Ereignisschleifen und eine Schnittstelle zur Anwendungsprogrammierung mit geringem IO bereitstellt ( API). Im Gegensatz zu anderen serverseitigen Plattformen ist JavaScript von Natur aus ereignisgesteuerte E/A, und dieses Projekt reduziert die Komplexität des Schreibens ereignisgesteuerter Anwendungen erheblich, sodass es schnell und mit unglaublicher Geschwindigkeit an Popularität gewann und auf tatsächliche Projekte angewendet wurde. (Jack: Diese Übersetzung ist nicht sehr zuverlässig. Der Originaltext: Dieses Projekt war nicht wie andere serverseitige JavaScript-Plattformen, bei denen alle I/O-Primitive ereignisgesteuert waren und daran kein Weg vorbeiführte.)
Dieses Projekt heißt Node.js und Entwickler sind es gewohnt, es Node zu nennen. Es bietet ein rein ereignisgesteuertes, nicht blockierendes Toolkit zum Erstellen von Anwendungen mit hoher Parallelität.
Hinweis: Node ermöglicht Ihnen den einfachen Aufbau schneller und skalierbarer Netzwerkdienste.
Seit seiner Einführung durch Ryan Dahl hat Node in der Branche große Aufmerksamkeit erregt. Sie haben damit begonnen, Node zu nutzen, um schnelle und skalierbare Netzwerkdienste bereitzustellen. Node ist so attraktiv.
Einerseits ist JavaScript die am weitesten verbreitete Programmiersprache auf dem Planeten. Die meisten Webprogrammierer haben JavaScript auf der Browserseite verwendet, und die Serverseite ist eine natürliche Erweiterung davon.
Da Node andererseits klein und niedlich ist, ist sein Kernfunktionssatz sehr klein und die vorhandenen APIs sind sehr verfeinert, was die Komplexität für Entwickler minimiert. Wenn Sie komplexere Anwendungen erstellen möchten, müssen Sie nur einige Module von Drittanbietern auswählen und installieren, die Ihnen gefallen.
Es gibt noch einen weiteren Grund, warum Node so attraktiv ist. Der Einstieg ist einfach. Sie können es in wenigen Minuten herunterladen, installieren und ausführen.
Befolgen Sie normalerweise einfach die Schritte auf der offiziellen Website (http://nodejs.org), um Node zu installieren. Es unterstützt Windows, Linux, Macintosh und Solaris.
Knoten unter Windows installieren
Node unterstützt Windows ab Version 0.6.0. Um Node unter Windows zu installieren, laden Sie einfach node-v*.msi von Http://nodejs.org/#download herunter und doppelklicken Sie dann ausführen Das ist alles, und dann wird möglicherweise ein Sicherheitsdialogfeld angezeigt, das dem in Abbildung 1-1 ähnelt.
Abbildung 1-1
Klicken Sie auf die Schaltfläche „Ausführen“. Nachdem der Download abgeschlossen ist, wird ein weiteres Sicherheitsdialogfeld (Abbildung 1-2) angezeigt, das Sie daran erinnert, ob Sie den Vorgang wirklich ausführen möchten.
Abbildung 1-2
Wenn Sie zustimmen, erscheint der Node-Installationsassistent (Abbildung 1-3). Klicken Sie auf „Weiter“ und Node startet die Installation in kurzer Zeit. Siehe Abbildung 1-4
Abbildung 1-3
Abbildung 1-4
Installation unter Mac OS X
Wenn Sie Mac OS ausführen, und Sie sehen das erste Dialogfeld des Installationsassistenten, siehe Abbildung 1-5
Abbildung 1-5Klicken Sie zum Installieren auf „Weiter“, und der Assistent fordert Sie auf, das Passwort des Systembenutzers einzugeben. Nach der Bestätigung beginnt die Installation. Nach einer weiteren kurzen Weile wird Node erneut installiert. Siehe Abbildung 1-6
Abbildung 1-6Vom Quellcode installieren
Wenn Sie ein UNIX-System verwenden, können Sie es durch Kompilieren des Quellcodes installieren. Zuerst müssen Sie die Node-Version auswählen, die Sie installieren möchten, dann den entsprechenden Quellcode herunterladen und erstellen, Node installieren und ausführen.
Hinweis: Node stützt sich auf mehrere Codebibliotheken von Drittanbietern, aber glücklicherweise sind die meisten davon bereits im Node-Distributionspaket enthalten. Wenn Sie aus dem Quellcode erstellen, benötigen Sie die folgenden zwei Dinge:
1.python (Version 2.4 oder höher) – Die mit Node veröffentlichten Build-Tools erfordern zum Ausführen eine Python-Umgebung
2.libssl-dev – Wenn Sie SSL/TLS-Verschlüsselung verwenden möchten, müssen Sie diese Klassenbibliothek installieren, die vom OpenSSL-Tool verwendet wird. Unter Linux- und UNIX-Systemen können Sie sie normalerweise mit dem Paketmanager des Systems installieren. libssl ist unter Mac OS X vorinstalliert. Wenn Sie also ein Mac OS X-System verwenden, müssen Sie libssl normalerweise nicht installieren.
Knotenversion auswählen
Normalerweise stehen auf der offiziellen Website nodejs.org zwei verschiedene Node-Versionen zum Download zur Verfügung: die stabile Version und die neueste Version.
Für Node stellt die kleinste Ziffer der Versionsnummer die Stabilität dieser Version dar. Stabile Versionen verwenden gerade Zahlen (z. B. 0,2, 0,4, 0,6) und instabile Versionen verwenden ungerade Zahlen (0,1, 0,3, 0,5, 0,7). .
Die instabile Version ist nicht nur funktional instabil, sondern die API kann sich auch in nachfolgenden Versionen ändern. Die in der stabilen Version veröffentlichten APIs werden nicht geändert. Für jeden stabilen Zweig enthält der neue Patch nicht nur Fehlerbehebungen, sondern auch API-Änderungen in nicht stabilen Versionen.
Sofern Sie keine neuen Funktionen in der neuesten instabilen Version testen möchten, sollten Sie die neueste stabile Version wählen. Instabile Releases sind für das Node-Kernteam wie Schlachtfelder, auf denen neue Funktionen getestet werden.
Obwohl immer mehr Projekte und Unternehmen Node erfolgreich in ihren Produkten verwenden (siehe offizielle Website-Homepage), müssen Sie möglicherweise lernen, die Änderungen in der API von der instabilen Version zur stabilen Version zu tolerieren. Das ist der Preis für das Erlernen einer neuen Technologie.
Node-Quellcode herunterladen
Jetzt wissen Sie, welche Version Sie herunterladen müssen. Gehen Sie dann zur offiziellen Website http://nodejs.org, um das entsprechende TAR-Paket zu finden, und kopieren Sie dann den Download-Link, wenn Sie ein UNIX verwenden System, Ihr System-Wget ist möglicherweise bereits installiert, was bedeutet, dass Sie es mit einem Shell-Befehl herunterladen können:
Wenn Sie wget nicht installiert haben, müssen Sie möglicherweise Curl verwenden:
Wenn Sie diese beiden Tools nicht installiert haben, müssen Sie andere Möglichkeiten finden, das TAR-Paket in Ihr lokales Verzeichnis herunterzuladen – beispielsweise über einen Browser oder über ein lokales Netzwerk.
(Die Beispiele in diesem Buch verwenden die neueste stabile Version zum Zeitpunkt des Schreibens: 0.6.12)
Knoten erstellen
Da wir nun den Quellcode haben, können wir ihn zum Erstellen der ausführbaren Node-Datei verwenden. Zuerst müssen Sie die zuvor heruntergeladene TAR-Datei entpacken:
Dann geben Sie das Quellcodeverzeichnis ein:
Knoten installieren
Wenn der Build abgeschlossen ist, verwenden Sie den folgenden Befehl, um Node zu installieren:
Wenn Sie auf Berechtigungsprobleme stoßen, fügen Sie sudo vor dem Befehl hinzu und führen Sie ihn als Root-Benutzer aus:
Jetzt können Sie einfach die Befehlszeilenschnittstelle von Node (CLI: Befehlszeilenschnittstelle) ausführen. Sie müssen nur die ausführbare Datei von Node aufrufen:
Vorbereitung und Verwendung des Node-Paketmanagers
Bisher können Sie nur die Sprachfunktionen und Kernfunktionen von Node selbst nutzen. Aus diesem Grund verfügen die meisten Programmierplattformen über ein System zum Herunterladen, Installieren und Verwalten von Modulen von Drittanbietern. NPM: Node Package Manager)
NPM besteht aus drei Teilen: einer Codebasis zum Speichern von Paketen von Drittanbietern, einem Mechanismus zum Verwalten lokal installierter Pakete und einem Standard zum Definieren von Paketabhängigkeiten. NPM stellt einen öffentlichen Registrierungsdienst bereit, der alle von allen veröffentlichten Pakete enthält, und stellt ein Befehlszeilentool zum Herunterladen, Installieren und Verwalten dieser Pakete bereit. Sie können die Paketformatstandards von Node befolgen, um Ihr Paket oder andere Pakete von Drittanbietern zu formulieren, von denen Ihre Anwendung abhängt.
Obwohl Sie NPM nicht kennen müssen, um mit der Verwendung von Node zu beginnen, müssen Sie es erlernen, wenn Sie Pakete von Drittanbietern verwenden möchten, da Node selbst nur einige Low-Level-APIs bereitstellt Entwicklungskomplexität Sie müssen nichts selbst programmieren. Mit NPM können Sie Module in einer Sandbox herunterladen und verwenden, sodass Sie mit Dingen experimentieren können, die Sie interessieren, ohne sich Gedanken über eine Verschmutzung der globalen Paketumgebung machen zu müssen.
NPM und Node mussten früher unabhängig voneinander installiert werden. Ab Version 0.6.0 ist NPM im Node-Installationspaket enthalten.
Verwenden Sie NPM zum Installieren, Aktualisieren und Deinstallieren von Paketen
NPM ist sehr leistungsfähig und kann auf vielfältige Weise verwendet werden. Seine Codebasis verwaltet zentral alle öffentlichen Module. Sie können über http://search.npmjs.org darauf zugreifen. Autoren von Node-Open-Source-Modulen können ihre Module in NPM veröffentlichen, und andere können das Modul herunterladen und installieren, indem sie den Modulnamen in der Paketinstallationsbeschreibung verwenden.
Dieser Teil des Inhalts enthält einige allgemeine Vorgänge zum Installieren und Löschen von Paketen, um mit der Verwaltung der Drittanbieterpakete zu beginnen, von denen Ihre eigenen Anwendungen abhängen. Sie müssen jedoch zunächst verstehen, dass diese Befehle gelten gibt es im „globalen“ und „lokalen“ Modus und wie sie sich auf Abhängigkeiten und die Modulsuche auswirken.
Globale und lokale Modi für NPM-Module
NPM arbeitet in zwei Hauptmodi: global und lokal. Diese beiden Modi wirken sich auf die Verzeichnisstruktur aus, in der Pakete gespeichert werden, und auf die Reihenfolge, in der Node Pakete lädt.
Der lokale Modus ist der Standardbetriebsmodus von NPM. In diesem Modus funktioniert NPM nur im Arbeitsverzeichnis und führt nicht zu systemweiten Änderungen hat keine Auswirkungen auf andere Node-Programme auf Ihrem Computer.
Der globale Modus eignet sich für gängige Module, die von vielen Programmen verwendet werden und immer global geladen werden, wie z. B. Befehlszeilentools, die nicht direkt von Anwendungen verwendet werden.
Wenn Sie nicht wissen, in welchem Modus Sie ein Modul installieren sollen, sollten Sie den lokalen Modus verwenden. Wenn ein Modulautor die globale Installation eines Moduls verlangt, wird er dies normalerweise in der Installationsanleitung angeben.
Globaler Modus
Wenn Sie bei der Installation von Node das Standardverzeichnis verwenden, installiert NPM das Paket im globalen Modus unter /usr/local/lib/node_modules. Wenn Sie den folgenden Befehl ausführen, sucht NPM nach der neuesten Version namens sax, lädt sie herunter und installiert sie im Verzeichnis /usr/local/lib/node_modules/sax.
Der Standardmodus ist der lokale Modus, daher müssen Sie das Flag -g nach dem NPM-Befehl hinzufügen, um den globalen Modus zu aktivieren.
Lokaler Modus
Der lokale Modus ist der standardmäßig empfohlene Modus für den Knotenpaketabhängigkeitsmechanismus. In diesem Modus befindet sich alles, was von NPM installiert wird, im aktuellen Arbeitsverzeichnis (das Stammverzeichnis ist keine Ausnahme), ohne dass sich dies auf globale Einstellungen auswirkt. Mit diesem Mechanismus können Sie die abhängigen Module der Anwendung und ihre Versionen einzeln festlegen, ohne sich Gedanken über die Verschmutzung des globalen Modulraums machen zu müssen. Dies bedeutet, dass Sie zwei Anwendungen haben können, die von unterschiedlichen Versionen desselben Moduls abhängen, ohne dass es zu Konflikten kommt.
In diesem Modus verwendet NPM das Verzeichnis node_modules im aktuellen Arbeitsverzeichnis, um Module zu speichern. Wenn Ihr aktuelles Arbeitsverzeichnis beispielsweise /home/user/apps/my_app ist, verwendet NPM /home/user/apps/my_app /node_modules zum Speichern aller lokalen Module. Das heißt, wenn Sie den Modulnamen verwenden, um auf das Modul in Ihrem Code zu verweisen, sucht Node zuerst im lokalen Verzeichnis node_modules. Wenn es nicht gefunden wird, durchsucht es das globale Verzeichnis node_modules. Die Priorität lokaler Module ist immer höher das von globalen Modulen.
Modul installieren
Verwenden Sie den folgenden Befehl, um die neueste Version eines Moduls zu installieren:
Um beispielsweise die neueste Version eines Moduls namens sax herunterzuladen und zu installieren, müssen Sie zunächst das Stammverzeichnis Ihrer Anwendung auf das aktuelle Verzeichnis festlegen und dann Folgendes eingeben:
Sie können auch über den folgenden Befehl die Installation einer bestimmten Version auswählen:
Modul deinstallieren
Verwenden Sie den folgenden Befehl, um ein lokales Modul zu deinstallieren:
Verwenden Sie den folgenden Befehl, um das lokale Modul zu aktualisieren:
Ausführbare Dateien verwenden
Module können eine oder mehrere ausführbare Dateien enthalten, um ein globales Modul zu installieren, installiert NPM die ausführbaren Dateien im Verzeichnis /usr/local/bin, das normalerweise auch auf Teil von festgelegt ist System-PATH-Umgebungsvariable. Wenn Sie dieses Modul lokal installieren, platziert NPM alle ausführbaren Dateien im Verzeichnis ./node_modules/.bin.
Umgang mit Abhängigkeiten
NPM installiert nicht nur die Modulpakete, die Sie benötigen, sondern auch andere Module, von denen diese Module abhängig sind. Wenn Sie beispielsweise Modul A installieren müssen und A von den Modulen B und C abhängt, dann installieren Sie A. B und C werden ebenfalls im Verzeichnis ./node_modules/A/node_modules installiert.
Zum Beispiel installieren Sie ein Modul namens nano lokal mit dem folgenden Befehl:
Hier erfahren Sie, dass das Nano-Modul von den Unterstrich- und Anforderungsmodulen abhängt, und es wird auch die installierte Version angezeigt. Wenn Sie jetzt das Verzeichnis ./node_modules/nano/node_modules überprüfen, werden Sie feststellen, dass diese beiden Module installiert wurden:
Verwenden Sie die Datei package.json, um Abhängigkeiten zu definieren
Wenn Sie mit dem Schreiben einer Anwendung beginnen, können Sie eine package.json-Datei im Stammverzeichnis der Anwendung erstellen, um die Metadaten der Anwendung zu definieren, wie z. B. den Namen der Anwendung, den Autor, die Adresse der Codebibliothek, Kontaktinformationen usw. In dieser Datei werden auch externe Module angegeben, von denen das Programm abhängt.
Wenn Sie nicht vorhaben, das Programm in NPM zu veröffentlichen, müssen Sie diese Datei nicht erstellen. Auch wenn Ihr Programm privat ist, kann sie NPM über die Abhängigkeiten der Anwendung informieren . (Anmerkung des Übersetzers: Wenn Sie beispielsweise den Quellcode des Projekts von der Entwicklungsumgebung in die Produktionsumgebung kopieren, können Sie alle abhängigen Pakete auf einmal installieren, indem Sie npm install aufrufen. npm schließt den Download und die Installation abhängiger Module automatisch über die Abhängigkeiten ab angegeben in package.json, Sie müssen es nicht einzeln tun, Details werden später bekannt gegeben)
package.json ist eine Datei im JSON-Format, die eine Reihe von Attributen enthält. Wenn sie jedoch nur zur Veranschaulichung der Abhängigkeiten des Programms dient, wird nur ein Abhängigkeitsattribut verwendet. Beispielsweise basiert eine Anwendung namens MyApp auf den Modulen sax, nano und request. Sie müssen lediglich eine package.json wie folgt erstellen:
„Name“: „MeineApp“,
„Version“: „1.0.0“,
"Abhängigkeiten" : {
„sax“ : „0.3.x“,
„nano“ : „*“,
"request" : ">0.2.0"
}
}
Sie haben die MyApp-Anwendung angegeben, die von Version 0.3 von Sax, einer beliebigen Version von Nano und der Anforderungsmodulversion höher als 0.2.0 abhängt.
Hinweis: Möglicherweise funktioniert NPM nicht, wenn Sie die Namens- und Versionsfelder angeben. Dies passiert nur bei älteren Versionen von NPM, da NPM ursprünglich für öffentliche Module und nicht für private Programme verwendet wurde.
Führen Sie dann im Stammverzeichnis der Anwendung Folgendes aus:
Auf diese Weise analysiert NPM die Abhängigkeiten und Ihr lokales node_modules-Verzeichnis und lädt fehlende Module automatisch herunter und installiert sie.
Sie können auch alle lokalen Module auf die neueste Version aktualisieren, die Ihren definierten Abhängigkeitseinstellungen entspricht, indem Sie den folgenden Befehl ausführen:
Zusammenfassung
In diesem Kapitel haben Sie gelernt, wie Sie Node und den Node Package Manager (NPM) installieren, deinstallieren und löschen. Außerdem haben Sie gelernt, wie Sie NPM zum Verwalten von Anwendungen verwenden Abhängigkeiten mit dem Dateielement package.json.
Nachdem Sie Node und NPM installiert haben, können Sie es ausprobieren. Zunächst müssen Sie jedoch über einige relevante Kenntnisse zum Node- und Event-Fahren verfügen, die im nächsten Kapitel vorgestellt werden.