Node.js - kann man das Essen?

Node.js, ich mag's, manche Leute mögen's nicht. Aber bevor ich hier großartig was über Node.js erzähle wäre es eventuell ja auch ganz hilfreich zu wissen, was das überhaupt ist.
Node.js ist ein Plattform auf der man serverseitig JavaScript-Code laufen lassen kann. Klingt erstmal unspektakulär, ist aber gut und nützlich umgesetzt.

Warum gut? Im Gegensatz zu unser aller Freund PHP beispielsweise basiert Node.js auf sog. Events. Das heißt, dass die Funktionen, die man aufruft (normalerweise) non-blocking sind, also dann direkt der nächste Code ausgeführt wird ohne, dass darauf gewartet wird, dass die andere Funktion ihren Vorgang abgeschlossen hat. Sobald diese Funktion dann fertig ist wird eine Funktion von dieser Funktion aufgerufen, die man ihr mitgegeben hat. Dazu mal ein kleines Beispiel:

readFileAsString("/home/ulf/karl.txt", function (content) { // Datei "/home/ulf/karl.txt" auslesen und dann sofort zu nächstem Code springen.
 console.log(content); // Dieser Code wird asynchron aufgerufen, sobald die Datei gelesen wurde
});
pedaKarl(); // Das hier ist der "nächste Code"

Das bringt den großen Vorteil mit sich, dass man sich keine sorgen darum machen muss, alles in separate Threads zu verschachteln etc., was ja immer große Verwirrung mit sich bringen kann.

Warum nützlich? Mit Node.js kommt auch "npm" (node package manager), mit dem man automatisch Bibliotheken aus dem Weltweiten Netz herunterladen kann. Aber nicht nur das, man kann natürlich auch selbst welche hochladen. Dadurch können Node.js Anwendungen unabhängig von der Umgebung werden bzw. man hat beim späteren "deployen" (also beim hochladen der Applikation auf den Server) keine Probleme mit nicht auffindbaren Libs.

Normalerweise wird Node.js verwendet, um Webserver zu stricken. Das muss man aber nicht zwingend machen, man könnte damit auch einfach nur Daten aus einer Datenbank ziehen, irgendwelche Berechnungen durchführen und sie dann wieder in die Datenbank schreiben.

unheimlich krassheftig hart geiles Webframework

Der große Vorteil an Node.js ist jedoch, dass man für Client (i.d.R. eine Webseite) und Server (also dann der Node.js-Server) die gleiche Programmiersprache verwendet, was den Workflow erheblich erleichtern dürfte. Das sieht man z.B. an dem, ich muss mich jetzt leider so ausdrücken, unheimlich krassheftig hart geilen Webframework Meteor.js, was auf Node.js basiert. Mit Meteor.js wird es um einiges leichter, Echtzeit WebApps zu programmieren, aber dazu eventuell später mehr.

Also um das ganze mal zusammenzufassen: Node.js ist meiner Meinung nach als "die Zukunft" zu bezeichnen, da es vieles stark erleichtert. Leider passen Webframeworks wie Node.js, Ruby on Rails etc. noch nicht so ganz auf die aktuelle "Architektur", da den Webservern heutzutage normalerweise noch ein Apache o.ä. vorgeschaltet ist, der dem von Node.js bereitgestellten Webserver eigentlich nur im Weg steht.

Author Image
Jan-Henrik Bruhn

Im Wesentlichen beschäftige ich mich hobbymäßig mit der Informatik. Kann man dann auch studieren, erstmal muss aber Abi. Das sollte man machen, mach ich auch (so wie es jetzt aussieht zumindest).