Und das mag ich an Node.js


Vor ungefähr 3 Monaten habe ich angefangen mich mit Node.js zu beschäftigen. Ganz natürlich tauche ich daher auch tiefer in die ganze Javascript Welt ein, den Node.js ist Javascript und entferne mich langsam aber sicher von der PHP Welt. Bin ich deswegen traurig?

Noch habe ich ein grosses Stück Arbeit vor mir. Noch wird es unzählige kleine Hello World Anwendungen geben. Noch werde ich unzählige Male auf stackoverflow nach Antworten suchen. Noch gebe ich aber nicht auf. Noch lernen ich Node.js

Faszination Node.js

Zuerst fasziniert einfach mal die Performance von Node.js. Die Benchmarks mögen zum Teil wenig aussagekräftig sein und schlussendlich kommt es immer auf die Applikation an, aber egal, ich bin ein normaler Mensch und diese Zahlen haben ihre Spuren hinterlassen: Zumindest haben sie mein Interesse geweckt. Wer hätte vor 15 Jahren gedacht, dass Javascript eine ernstzunehmende Programmiersprache ist/wird.

Ich erinnere mich noch an Zeiten, da war es eine ernsthafte Möglichkeit, dass Javascript deaktiviert ist. Als Entwickler musste man sich Gedanken machen, dass die Seite auch ohne Javascript funktioniert. Javascript war eine Sprache für Hacker, welche Unfug damit trieben und Kiddies, aber sicher nicht für ernstzunehmende Software Entwickler, ganz zu schweigen, um damit irgendwelche grossen Applikationen zu bauen. Und heute? Javascript rules the world!

Der Start mit Node.js könnte einfacher nicht sein

Ich bin also erst einmal ganz heiss darauf dieses Node.js näher anzuschauen und unter Linux ist Node.js auch schnell installiert. Es dauert ca. 10 Minuten und ich habe meine erste Hallo Welt Node.js Applikation:

sudo apt-get install nodejs

Schon ist node Installiert, jetzt nur noch schnell das Hello World

// hello_node.js
var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World');
}).listen(8124, "127.0.0.1");
console.log('Server running at http://127.0.0.1:8124/');

Und den Nodeserver starten und schon habe ich in meinem Browser Hello World.

node hello_node.js

Wuala. Wenn ich an mein erstes PHP Hello World zurückdenke, dann war das doch massiv mehr aufwand: Apache installieren, PHP installieren und dann noch alles konfigurieren (und ja, vor 10 Jahren, war das doch noch ein bisschen manuelle Arbeit).

Aber warum gerade Node.js?

Schnell lerne ich die Basics und freue mich darüber, dass man einfach Module machen kann, merke jedoch auch schnell, dass es über ein paar jQuery Selektoren hinausgeht. Um eine Applikation zu schreiben muss ich mir erst mal Gedanken machen, wie das ganz zu strukturieren ist und jetzt fängt das lesen an, und noch viel wichtiger.

Ich merke jedoch auch, dass ich diese Konzepte, welche ich hier lerne fast 1 zu 1 auf die Browserwelt übertragen kann. Da gibts ja requirejs.org, welches bestens für Modularisierung geeignet ist. Es stellt sich heraus, dass viele Funktionen einer App besser im Client sitzen sollten, und hurra, das kann ich jetzt durch meine verbesserten javascript Kentnisse auch problemlos umsetzen.

Wenn ich mich auf der Serverseite bewege, dann lerne ich automatisch auch etwas für die Clientseite und umgekehrt. Dies war bis anhin ein grösseres Problem: 1-2 Monate Serverseitig programmiert (Python oder PHP) und schon geht das meiste Javascript Wissen und die denkweise verloren. Umgekehrt, ein bisschen im Browser gescriptet und schon geht die Lust am Server verloren: Node.js ermöglicht beides und noch viel besser: Code kann (wenn auch nicht immer 1:1) wiederverwendet werden!

Die Synergien, welche sich aus Backend und Front-end ergeben sind bestens für einen Hobby Entwickler wie mich geeignet.

Ist alles easy in Node.js

Nein, überhaupt nicht. Diese asynchrone Welt ist ziemlich verdreht. Viele der bekannten OOP/Java Denkweisen und Patterns funktionieren einfach nicht so richtig. Javascript ist eine niftige kleine Sprache, die es in sich hat. Für alles gibt es zig verschiedene Möglichkeiten und ich weiss nach wievor nicht, was die Ninja Art ist, um eine Klasse zu erstellen. Des weiteren muss ich mich daran gewöhnen, dass die Applikationen nicht bei jedem Klick neu geladen und vom Server gerendert wird, sondern dass viel Logik im Client läuft und dieser Client einen Zustand hat: Erfordert viel Umdenken für einen alten PHP Hasen.

Gebe ich auf? Nein, sicher nicht. Node.js ist cool.