Node.js Tutorial – Der ultimative Leitfaden für Anfänger

Node.js Tutorial – Der ultimative Leitfaden für Anfänger Thumbnail
Veröffentlicht am 31. Mai 2020Zuletzt aktualisiert am 19. Juni 2020

Dieses Node.js Tutorial ist für alle Entwickler, die mit Node.js programmieren möchten, aber noch nichts oder kaum etwas darüber wissen – also komplette Anfänger in diesem Bereich. Dabei wird Node.js immer populärer und jeder Webentwickler sollte mindestens die Grundlagen beherrschen. Nach diesem Tutorial kannst Du dich eindeutig zu dieser Gruppe zählen.

Anzeige

Dieses Node.js Tutorial ist sehr praktisch ausgerichtet. Trotzdem werden ich am Anfang kurz auf die Funktionsweise, Einsatzgebiet und die Installation eingehen. Ab Kapitel 3 geht es dann mit dem praktischen Teil los.

Damit Du einen roten Faden durch dieses Tutorial hast, habe ich Dir die Punkte mal zusammengefasst.

1. Was ist Node.js?

Mit Node.js hat die Skriptsprache JavaScript auch Einzug in die serverseitige Programmierung gehalten. Vor Node.js war JavaScript hauptsächlich nur das Frontend und die Interaktion mit dem Besucher zuständig.

Mit Node.js lassen sich allerdings nun von kleinen CLI (Command Line) Tools bis hin zu komplexen Programmen und eigenständige HTTP Server entwickeln. Genau diese universelle Einsetzbarkeit macht Node.js für mich persönlich – und auch für viele andere Entwickler – so genial!

Und für was brauche ich Node.js nun?

Beim Aufruf einer Website wird der JavaScript Code beim Besucher, also clientseitig ausgeführt. Bei Node.js hingegen wird JavaScript auf dem angefragten Server, also serverseitig ausgeführt. Das ist der offensichtlichste Unterschied und klingt erstmal unspektakulär.

Durch diese Tatsache ändert sich aber die meisten Einsatzgebiete von JavaScript. Im Browser ist JavaScript hauptsächlich für die Manipulation am DOM zuständig. In Node.js fällt diese Aufgabe weg und es ist für die Rückgabe von Daten verfügbar. Dabei kann sich Node.js auch mit einer Datenbank (z.B. MySQL oder MongoDB) verbinden.

Node.js fungiert also als eine Art Webserver. An diesem Punkt werden wir anknüpfen und noch in diesem Tutorial einen eigenen Webserver mit Node.js schreiben.

Alles klar?

Wenn Du Dich nun fragst, ob Du Node.js wirklich brauchst und können willst, solltest Du Dir die am häufig gestelltesten Fragen weiter unten durchlesen und entscheiden, ob Node.js die richtige Technologie für Dich ist.

Anzeige

Ein weiterer wichtiger Grund für den Erfolg sind die Bordmittel, die mit Node.js ein herkommen. Von Grund auf hat Node.js bereits viele Funktionen und Module die man einfach benutzen kann. Und um das System noch perfekt zu machen, gibt es den Paketmanager – auch npm (Node Package Manager) – genannt. Mehr Informationen dazu findest Du später unter dem Punkt Node.js Module. Jedenfalls ist es damit kinderleicht neue Funktionen, also Erweiterungen von anderen Entwicklern und der Node.js Community hinzuzufügen.

Das hört sich natürlich erstmal viel versprechend an, aber kannst Du Dir darunter auch schon etwas konkretes vorstellen? Vermutlich eher nicht. Zumindest würde es mir nicht sonderlich leicht fallen, wenn ich so etwas zu einem mir unbekannten Thema lesen würde. Deshalb lies diesen Abschnitt am besten am Ende dieses Beitrags noch einmal und ich versichere Dir, Du wirst wissen, wovon ich rede! 😉

2. Node.js installieren

Bevor wir anschließend mit der eigentlichen Programmierung beginnen können, müssen wir zuerst Node.js auf unserem Rechner installieren. Dazu wähle nun Dein Betriebssystem aus, auf dem Du entwickeln möchtest. Windows oder Mac..?

2.1 Windows

Unter Windows kannst Du Dir einfach den Installer herunterladen und der Installationsanleitung folgen. Lade am besten die LTS (Long-term support) Version herunter, da diese bereits etabliert ist und weniger Bugs hat, als die neuste Version.

Windows Installer

2.2 Mac

Auf dem Mac kannst Du genau wie bei Windows den offiziellen Installer herunterladen und der Installationsanleitung folgen. Lade auch hier am besten die LTS (Long-term support) Version herunter, da diese bereits etabliert ist und weniger Bugs hat, als die neuste Version.

Mac Installer

2.3 Node.js App Hosting (Gedankenanstoß)

Wenn Du Deine Domains mit Plesk verwaltest und deine App dort hosten möchtest, benötigst Du lediglich die Node.js Erweiterung, die Du durch einen einfachen Klick herunterladen kannst.

Anzeige
Plesk Oberfläche - Installation der Node.js Erweiterung
Plesk Oberfläche – Installation der Node.js Erweiterung

Zum Entwickeln solltest Du allerdings lokal auf deinem Mac oder Windows Rechner arbeiten. Wenn Deine App fertig ist und Du sie deployen (live stellen) möchtest, kannst Du diese Anleitung zur Hilfe nehmen.

Das solltest Du Dir auch im Hinterkopf behalten, ist aber für den Anfang noch nicht wichtig, das passiert erst im letzten Schritt.

3. Die CLI verstehen

CLI steht für Command-Line Interface und bedeutet Kommandozeile. Auf dem Mac kannst Du hierfür das vorinstallierte Programm „Terminal“ benutzen und unter Windows die Eingabeaufforderung (cmd.exe).

cmd.exe von Windows
cmd.exe von Windows

Hiermit können wir Node.js steuern. Über den Befehl node können wir nun beliebige JavaScript Befehle ausführen. Im weiteren Verlauf dieses Beitrags weißt Du nun, was Du unter der CLI verstehen kannst.

Die CLI benötigen wir, da hierüber unsere App starten, stoppen und außerdem Fehler unserer App angezeigt bekommen. Dazu aber später mehr.

4. Node.js Module

Die Kronjuwelen von Node.js sind dessen Module. Am Anfang habe ich ja bereits angesprochen, dass Node.js einen Package Manager besitzt. Die Abkürzung und der Befehl für die CLI lautet npm (Node Package Manager).

NPM ist ein gigantisches Netzwerk aus Development Tools, die man sich kostenfrei für seine Anwendung herunterladen kann. Wenn Du mit Node.js arbeitest, wirst Du feststellen, dass Du immer wieder auf Module anderer Entwickler zurückgreifen musst und solltest. Man muss das Rad nicht immer neu erfinden.

Im diesem Beispiel laden wir uns das Modul express herunter. Das klappt mit folgenden Befehl.

Anzeige
npm install express

Man kann auch Module global installieren, das bedeutet, es gilt auf deinem kompletten Rechner und ist nicht nur in einem Projekt verfügbar. Dazu hängst Du einfach den Parameter -g an.

npm install -g express

Wenn man ein Modul installiert, wird automatisch der Ordner node_modules angelegt. Darin sind alle installierten Module enthalten und kann im Normalfall von Dir ignoriert werden. Ein Modul können wir im Code später so einbinden:

const express = require('express');

5. Erstes Projekt

5.1 Projektordner erstellen

Es ist soweit, wir beginnen nun endlich mit dem Programmieren. Um ein Node.js Projekt zu erstellen, legen wir einfach einen normalen Ordner in einem beliebigen Verzeichnis an. Darin erstellen wir eine index.js, welche unsere Startdatei darstellt.

Erstellter Ordner mit der Startdatei index.js
Erstellter Ordner mit der Startdatei index.js

5.2 Node.js App initialisieren

Nun müssen wir in diesem Ordner sagen, dass wir daraus eine Node.js App machen wollen, das tun wir über diesen Befehl in der CLI:

npm init

Dabei werden wir nach verschiedenen Parametern, wie package name, version und description gefragt. Diese Felder kannst Du ausfüllen oder wie ich einfach auf Standardeinstellungen belassen. Diese Einstellungen können wir später jederzeit in der package.json anpassen.

Konsolenausgaben nach dem npm init Befehl
Konsolenausgaben nach dem npm init Befehl

5.3 package.json kennenlernen

In unserem Ordner wurde nun eine package.json Datei angelegt. In dieser Datei werden alle Informationen über unsere Anwendung, wie den Autor, Version und am wichtigsten, über alle installierten Abhängigkeiten (Module) gespeichert.

// package.json

{
  "name": "app",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

Aktuell brauchst Du damit noch nichts weiter machen, wird aber noch wichtig.

5.4 Programmcode schreiben

Nun können wir in unserer index.js den ersten JavaScript Code schreiben. Da können wir natürlich nicht darauf verzichten und müssen „Hello World“ ausgeben.

// index.js

console.log('Hello World');

5.5 Anwendung testen

Der erste Code ist geschrieben und wir wollen unser Programm starten. Das machen wir über diesen Befehl:

Anzeige
node index.js

Wir erhalten folgendes Ergebnis, cool! ?

"Hello World" Ausgabe unserer 1. Node.js App
„Hello World“ Ausgabe unserer 1. Node.js App

Zugegeben, zu Beginn des Node.js Tutorials klang das alles viel cooler. Aber keine Angst, da geht noch mehr. 🙂

Du kannst z.B. einfach schon mal JavaScript Funktionen in dieser Datei probieren, um z.B. einfach zwei Zahlen zu addieren und diese dann auf der Konsole auszugeben. Spiel‘ einfach mal 5 Minuten damit rum und lies dann weiter.

Nicht immer findet man ein passendes Tutorial im Internet, deshalb kann Dir ein Nachschlagewerk für Node.js* eine große Unterstützung sein.

6. Workflow verbessern – mit Nodemon

Es ist doch wirklich nervig, wenn wir nach jeder kleinen Änderung am Code unsere Node.js App manuell neu starten müssen, oder? Richtig, deshalb gibt es das Modul nodemon, welches wir global installieren. Dieses Modul erkennt Dateiänderungen und startet die Node.js App binnen Millisekunden neu. Dadurch wird unser Workflow enorm verschnellert.

npm install -g nodemon

Nach der Installation starten wir Nodemon über diesen Befehl und direkt wird unsere App gestartet und bei Änderungen automatisch neu gestartet.

nodemon index.js

Wenn Du nun deine Dateien innerhalb des Projektordners speicherst, wird die Node.js App automatisch neu gestartet.

Verbesserter Workflow - dank Nodemon
Verbesserter Workflow – dank Nodemon

7. Node.js Webserver – Inhalt im Browser ausgeben

7.1 Webserver aufsetzen

Soweit so gut. Wir können Funktionen schreiben und ausführen und Texte aus der Konsole ausgeben. Davon hat der Benutzer unserer Anwendung allerdings nichts, da er ja nur über den Browser zugreifen kann.

Anzeige

Deshalb setzen wir jetzt einen Webserver auf und liefern dem Benutzer Inhalte im Browser aus. Genau das gleiche passiert auch beim Aufruf einer Website.

Dazu installieren wir uns das Modul express über folgenden Befehl, falls nicht schon in Schritt 4 passiert:

npm install express

Und unsere index.js passen wir wie folgt an:

// index.js

const express = require('express');
const app = express();

app.get('/', (request, response) => {
  response.send('Our first Node.js webserver');
});
app.listen(3000, () => console.log('Server running on port 3000'));

Damit Du alles verstehst, hier eine Erklärung Zeile für Zeile:

ZeileBeschreibung
Zeile 3Einbinden des express Moduls.
Zeile 4Initialisierung des express Moduls in der Variable app.
Zeile 6Wir fangen den Seitenaufruf von / unseres Servers ab, um eine Aktion ausführen zu können. Man nennt einen solchen Aufruf eine Route.
Zeile 7Wir senden dem Anfragenden den Text „Our first Node.js webserver“ als Antwort zurück.
Zeile 9Wir starten unseren Webserver auf dem Port 3000 und geben eine Meldung in der Konsole aus.
Zeile-für-Zeile Erklärung des ersten Node.js Webservers (Express)

Wenn wir um Browser nun unseren Rechner auf dem Port 3000 anfragen, bekommen wir dieses Ergebnis:

Browseransicht beim Aufruf unserer Node.js Webserver Anwendung
Browseransicht beim Aufruf unserer Node.js Webserver Anwendung

Simpel, oder? Deshalb ist Node.js so genial. Man benötigt gerade einmal sieben Zeilen Code für seinen eigenen Webserver.

7.2 Rest API Grundlagen – Parameter in Routen

Wenn wir unsere Route nun ein kleines bisschen anpassen, können wir bereits übergebene Daten zurückliefern:

// index.js

const express = require('express');
const app = express();

app.get('/:yourName', (req, res) => {
  res.send('Your name: ' + req.params.yourName);
});
app.listen(3000, () => console.log('Server running on port 3000'));

Hier steht :yourName für einen Variablen String (Doppelpunkt beachten!), den wir in unserer URL übergeben können und mit req.params.yourName können wir ihn auslesen und senden den Namen wieder an den Benutzer zurück.

Wenn wir nun http://localhost:3000/test aufrufen, erhalten wir den String mit dem übergebenen Namen als Antwort. Damit kannst Du jetzt schon Daten auslesen und versenden und das mit wirklich wenig Code.

Anzeige

Genau diese Vorgehensweise sind die Grundlagen für die Erstellung einer Rest API.

8. Node.js App deployen (veröffentlichen)

In vielen Node.js Tutorials wird vergessen zu zeigen, wie man eine Node.js App letztendlich deployen (veröffentlichen) kann. Meist wird einfach nach den Grundlagen aufgehört.

Man kann seine App natürlich lokal laufen lassen, macht aber keinen Sinn, wenn man eine Anwendung für andere freigeben möchte.

Eine kostenlose Möglichkeit Node.js Apps zu hosten ist Heroku. Dazu kannst Du einfach diesem Guide folgen. Das kostenlose Modell bei Heroku hat natürlich nicht alle Funktionen, z.B. kann man keine eigene Domain verwenden.

Eine weitere Möglichkeit eine Node.js App zu deployen ist der eigene Server mit Plesk als Verwaltungssoftware. Solche Server sind schon für unter 10 Euro pro Monat zu haben und sind zum Entwickeln, testen und auch zum produktiven Einsatz bestens geeignet! Zum deployen von Node.js Apps mit Plesk gibt es hier ein Tutorial.

9. FAQ – Häufig gestellte Fragen

Wann verwende ich Node.js?

Node.js wird primär für „normale“ dynamische Websites und Backend APIs (Rest APIs) verwendet. Außerdem wird Node.js häufig bei Anwendungen eingesetzt, die Daten in Echtzeit verarbeiten sollen (z.B. Chats).

Ist Node.js eine Programmiersprache?

Definitiv Nein. Node.js verbindet die Skriptsprache JavaScript und eine Netzwerkkomponente. Da Node.js auf der Google V8 JavaScript Engine entwickelt wurde, beherrscht Node.js Grundlagen der Netzwerktechnik wie die Protkolle HTTP, DNS und TCP.

Ist es einfach Node.js zu erlernen?

Da Node.js kein Framework und keine Programmiersprache ist, muss man sich eher die Frage stellen, ob es einfach ist, JavaScript zu lernen. Dabei haben Umfragen ergeben, dass JavaScript eine der am einfachsten zu erlernenden Skriptsprachen ist.

Anzeige
Was ist eine Middleware?

Eine Middleware ist ein Teilprogramm, also eine Funktion, die zwischen zwei Komponenten ausgeführt wird. Beispielsweise wenn der Benutzer /settings aufruft, soll der eigentliche Programmcode nur ausgeführt werden, wenn der Benutzer angemeldet ist. Dazu schreibt man eine Middleware Funktion und ruft diese Funktion davor auf. Das tut man, damit man den gleichen Code (Überprüfen des Logins) mehrfach verwenden kann, ihn aber nur einmal schreiben muss.

Wie und wo kann ich eine Node.js App hosten?

Node.js Apps kannst Du z.B. kostenlos bei Heroku hosten. Wenn Du allerdings einen eigenen Server hast, kannst Du in Plesk kostenlos Deine eigene Node.js App hosten, dazu habe ich hier eine komplette Anleitung erstellt.

Was macht die package.json?

Die package.json beinhaltet bei Node.js Apps Informationen über den Namen, den Autor, uvm. Am wichtigsten sind hier die dependencies. Dies ist eine Liste der Module (Abhängigkeiten) die Deine App verwendet. Außerdem kannst Du unter scripts Kommandos definieren, um Deine App auszuführen oder zu testen.

Was macht der node_modules Ordner?

Der node_modules Ordner enthält alle Module, die in deiner Node.js eingebunden sind. Darin sind unter anderem Standardmodule, aber auch alle Module die Du zusätzlich installiert hast und in der package.json unter scripts gelistet sind. Den node_modules Ordner brauchst Du nicht in Dein Git-Repository oder zum Live Hosting zu pushen, da durch den Befehl npm install alle Module erneut in den Ordner heruntergeladen werden.

Das ist mir zu viel. Wie finde ich einen passenden Node.js Developer?

Das ist auch kein Problem. Die Kollegen von toptal.com haben dazu einen Guide veröffentlicht.

Nächste Schritte

Puuh! Ganz schön viele Informationen auf einmal, nicht wahr? Trotzdem hoffe ich, dass Du einen guten Eindruck davon bekommen hast, was mit Node.js alles möglich ist und ich Dich neugierig auf mehr gemacht habe.

Wie geht es jetzt weiter? Wenn Du dich direkt an ein größeres, aber sehr interessantes Projekt machen willst, zeigt Dir dieser Beitrag, wie Du ein Login-System mit Node.js erstellen kannst. Dabei werden wir speziell auf eine Datenbankverbindung und die Erstellung einer Rest API eingehen.

Ungeklärte Fragen kannst Du gerne in die Kommentare schreiben! 🙂

Ähnliche Beiträge
NEW 🚀
Beteilige dich an der Unterhaltung

5 Kommentare

  1. Guten Tag, danke für den guten Beschrieb.
    Beim Befehl npm init zum installieren, kommen folgende Fehlermeldungen (schicke gerne ein Bild, damit übersichtlicher). Können Sie mir bitte weiter helfen?

    Is this OK? (yes) yes
    npm ERR! code EPERM
    npm ERR! syscall open
    npm ERR! path C:\Programme\nodejs\node_app\package.json
    npm ERR! errno -4048
    npm ERR! Error: EPERM: operation not permitted, open ‚C:\Programme\nodejs\node_app\package.json‘
    npm ERR! [Error: EPERM: operation not permitted, open ‚C:\Programme\nodejs\node_app\package.json‘] {
    npm ERR! stack: „Error: EPERM: operation not permitted, open ‚C:\\Programme\\nodejs\\node_app\\package.json'“,
    npm ERR! errno: -4048,
    npm ERR! code: ‚EPERM‘,
    npm ERR! syscall: ‚open‘,
    npm ERR! path: ‚C:\\Programme\\nodejs\\node_app\\package.json‘
    npm ERR! }
    npm ERR!
    npm ERR! The operation was rejected by your operating system.
    npm ERR! It’s possible that the file was already in use (by a text editor or antivirus),
    npm ERR! or that you lack permissions to access it.
    npm ERR!
    npm ERR! If you believe this might be a permissions issue, please double-check the
    npm ERR! permissions of the file and its containing directories, or try running
    npm ERR! the command again as root/Administrator.
    npm ERR! A complete log of this run can be found in:
    npm ERR! C:\Users\schmi\AppData\Roaming\npm-cache\_logs\2020-02-01T20_05_54_158Z-debug.log

    1. Hallo!
      Auf den ersten Blick sieht es so aus, als würden irgendwelche Berechtigungen nicht stimmen? Vielleicht mal versuchen, die CMD mit Administratorrechten auszuführen. Außerdem kann die Logdatei unter C:\Users\schmi\AppData\Roaming\npm-cache\_logs\2020-02-01T20_05_54_158Z-debug.log vielleicht weitere Hinweise liefern.

      LG LH

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.