fboës - Der Blog

Wie man als PHP-Entwickler bei Node.js einsteigt

Node.js und PHP unterschieden sich hinsichtlich ihrer Philosophie erheblich. Aber da jeder PHP-Entwickler auch Javascript beherrscht, ist ein Sprung zu Node.js gar nicht so schwer.

Da ich mich auch erst seit kurzer Zeit mit Node.js beschäftige, liste ich hier die größten Unterschiede zu PHP auf, die mir ins Auge gefallen sind.

Warum Node.js?

Node.js kann ähnliche Aufgaben wie PHP abdecken… aber auch deutlich mehr. So kann man damit neben Webapplikationen (z.B. via Express) auch auf allen Betriebssystemen funktionsfähige Kommandozeilen-Tools bis hin zu komplett eigenständigen Desktop-Applikationen schreiben.

Nicht zuletzt ist Node.js der Motor hinter Projekten wie Gulp und Grunt, die bei der Web-Entwicklung wichtige Dienste leisten. Wer Node.js beherrscht, kann für beide Task-Runner eigene Plugins schreiben.

Nicht zuletzt kann man Techniken aus Node.js auch in „normalen“ Browser-Javascript einsetzen, um z.B. eine bessere Modularisierung zu erreichen.

Einrichten

Um Node.js betreiben zu können, muss man wenig überraschend Node.js installieren. Dazu lädt man Node.js von der zugehörigen Seite herunter und installiert es.

Bestandteil des Pakets ist der Node Package Manager, mit dem man auf eine Vielzahl von Paketen zugreifen kann. Anders als bei PHP sind viele sehr Funktionen wie z.B. Datenbank-APIs, Dateisystem-APIs o.ä. nicht von vorne herein bei Node dabei, sondern können projektweise als kleines Paket nachinstalliert werden.

Nach der Installation kann mittels node auf der Kommandozeile der Node-Interpreter gestartet werden. Mit node DATEINAME kann eine Node.js-Datei ausgeführt werden.

Mittels npm wird der Node Package Manager aufgerufen. Mittels npm install PACKAGENAME --save wird ein Package installiert. Ein wichtiges Paket sollte mit npm install -g jshint gleich global installiert werden: JSHint findet gefährliche und unschöne Javascript-Konstruktionen in eurem Code und macht euch generell zu einem besseren Programmierer.

Kern-Ideen & Unterschiede

Bei Node.js kommt Javascript als Sprache zum Einsatz. Um Javascript als solches richtig zu benutzen, empfiehlt es sich, das Buch „Javascript – The Good Parts“ von Douglas Crockford zu lesen (und zu verstehen). Folgende Kern-Ideen sollten für PHP-Programmierer gewöhnungsbedürftig sein:

  • Zumindest die Funktionsweise von Prototypen unterscheidet sich deutlich von den in PHP eingesetzten Objekten. Variablen, Funktionen, Objekte, Methoden und eigentlich alles, was in Javascript kreucht und fleucht, basiert auf Prototypen.
  • Node.js wird nicht von einem Webserver ausgeführt. Viel mehr kann Node.js seinen eigenen Webserver erzeugen, oder auf der Kommandozeile Skripte ausführen.
  • Node.js kann mittels Events bzw. Promises Dinge parallel tun. Ein geschickter Umgang mit dieser Technik macht die Geschwindigkeit von Skripten aus, und sollte aus Browsern vom Event-Handling her grundsätzlich bekannt sein.
  • Sogenannte Streams erlauben das Lesen von Datenströmen. So kann eine Datei schon während des Einlesens mittels Events verarbeitet werden. Das hat u.a. den Vorteil, dass das Programm nicht auf das Einlesen der Datei warten muss.
  • Viele Funktionalitäten finden sich in Packages, die man mittels npm erst installieren muss. Nach einer kurzen NPM oder Google-Suche findet man einen Package-Namen, den man einfach via npm install PACKAGENAME --save installiert.
  • Ein require wird immer an eine Variable gebunden; die Funktionalität aus der per require eingebundenen Datei steht dann unter dem betreffenden Variablennamen bereit.

Ein kleines Beispiel:

npm install glob --save-dev   # Installiert das Paket `glob`

Im Javascript wird dies dann wie folgt verwendet:

var glob = require("glob");

glob(…){…}

Das erste Projekt

  1. Erzeugt euch ein leeres Verzeichnis, in dem ihr euer neues Projekt anlegen wollt.
  2. Mit npm init könnt ihr die ersten Details eures Projekts erläutern. Das erzeugt gleichzeitig die Datei package.json, in der sich später zentrale Einstellungen eures Projekts wiederfinden. U.a. wird in dieser Datei festgehalten, welche Node-Packages installiert werden sollen.
  3. Danach könnt ihr eine blogophon-index.js anlegen, in der ihr fröhlich herumcoden könnt.
  4. Mittels node blogophon-index.js kann man die Datei danach ausführen.
  5. Außerdem solltet ihr bei GIT-Projekten eine .gitignore-Datei anlegen, in der ihr das Verzeichnis node_modules eintragt. In diesem Verzeichnis werden nämlich die in der package.json vermerkten Packages installiert.

Fazit

Für Web-Entwickler ist der Einstieg leicht, da Javascript sowieso in Browsern verwendet wird. Zumindest eine kurze Stippvisite erweitert den Horizont ungemein. Außerdem werden Kernideen von Node.js auch in wichtigen Javascript-Frameworks wie jQuery, Angular oder React eingesetzt.

Zuletzt geändert am

fboës - Der Blog

Zur Übersichtsseite