Leidenschaftliche Web-Entwicklerin.
Node.js ist ein Framework für die Skriptsprache JavaScript. Es handelt sich hierbei um eine Open Source Laufzeitumgebung. Mit dieser lässt sich JavaScript-Code außerhalb eines Webbrowsers ausführen. Genau wie JavaScript ist auch Node.js plattformunabhängig. Welche Vorzüge Node.js in der Erstellung von Webseiten hat, besprechen wir hier im Detail.
Inhaltsverzeichnis
JavaScript wurde entwickelt, um dynamische Webseiteninhalte im Browser zu generieren. Wollte man auch auf dem Server dynamische Inhalte generieren, war man zu Beginn immer noch darauf angewiesen, sich für eine weitere Sprache zu entscheiden. Denn JavaScript war ausschließlich für die Programmierung aufseiten des Webbrowsers bestimmt. 2009 wurde dann Node.js von Ryan Dahl ins Leben gerufen, um diese Lücke zu schließen.
Node.js agiert serverseitig und arbeitet Event-basiert. Was genau bedeutet Event-basiert? Im Kontext der Webentwicklung versteht man unter einem Event eine Aktion, auf die reagiert werden kann. Man kann Events in Kategorien unterscheiden, beispielsweise nutzerbasierte Events wie ein Mausklick, eine Tastatur- oder Spracheingabe. Eine weitere Kategorie wären die anwendungsgenerierten Events, etwa wenn ein HTTP-Aufruf oder Dateizugriff fertiggestellt wurde. Auf diese Aktionen kann das Programm reagieren, sprich: Bei einem Mausklick kann eine oder mehrere darauffolgende Aktionen durchgeführt werden.
Das Framework gilt heute als eines der bekanntesten und meist genutzten JavaScript-Frameworks. Basierend auf der V8 Engine von Google Chrome, welche auch zur Ausführung von JavaScript verwendet wird, lässt sich Node.js ganz einfach mit JavaScript verwenden.
Aufgrund seiner Event-basierten Eigenschaften ist Node.js in der Webserver-Entwicklung gerne gesehen. Denn lange waren Server threadbasiert, und nicht Event-basiert. Aber welchen Unterschied macht das? Ein Beispiel:
In einem Schnellrestaurant steht eine lange Schlange. Die Person an der Kasse bestellt ihr Essen, und bleibt dann, solange vorne in der Schlange stehen, bis ihre Bestellung fertig ist. Die Kasse kann in dieser Zeit keinen weiteren Kunden bearbeiten. Dies wäre gleichzusetzen mit threadbasierten Servern. Ein Event-basierter Server würde wie folgt funktionieren: In unserem Schnellrestaurant steht wieder eine lange Schlange. Die Person an der Kasse bestellt ihr Essen, und geht dann an eine andere Stelle um dort auf ihre Bestellung zu warten. So kann die Kasse den nächsten Kunden abarbeiten. Sobald die Bestellung des ersten Kunden fertig ist, wird dieser benachrichtigt und kann es abholen. Dieses Prinzip ist uns gut bekannt und wirkt auch im realen Leben effizient.
Aufmerksame Leser werden nun feststellen, dass Event-basierte Abläufe Risiko für Blockaden bietet. In unserem Schnellimbiss-Beispiel könnte dies beispielsweise durch Online-Bestellungen passieren, die den Ablauf der Vor-Ort-Kunden etwas ins Stocken geraten lässt.
Mit Node.js ist es möglich darauf zu achten, dass während dieser Events keine Blockaden entstehen. Der Ein- und Ausgang der Events darf nicht behindert werden, dies nennt sich dann non-blockig I/O.
Außerdem ist es auch möglich weit außerhalb der Webentwicklung Software zu erstellen. So lassen sich Skripte für die Kommandozeile und Desktopanwendungen erstellen. Wie bei jeder anderen Allrounder-Sprache gilt aber auch hier Vorsicht. Denn die reine Möglichkeit zur breitgefächerten Nutzung bietet noch lange keine Garantie für Sicherheit oder elegante Lösungen.
Dieses Feature kennt man auch unter dem Begriff Non-Blocking I/O. Synchrone Threads, welche für jede Anfrage einen eigenen Thread starten und den gesamten Ablauf blockieren, wollte man damit vermeiden. So hilft Node.js dem Webserver keine einzelnen Threads mehr zu starten. Stattdessen werden mit Node.js sogenannte Single-Threads gestartet. Diese werden dann nacheinander in einer Endlosschleife bearbeitet.
Die Endlosschleife zur Abarbeitung von Single-Threads wird durch die Komponente Libuv realisiert. Diese Bibliothek erstellt standardmäßig einen Threadpool der Größe 4. So können standardmäßig bis zu vier Threads gleichzeitig abgearbeitet werden. Außerdem sendet Libuv Anfragen an das Betriebssystem, welches sich um den zeitlichen Ablauf der Threads kümmert. So lassen sich Aktionen ausführen, ohne auf eine vorherige Aktion zu warten. Beispielsweise kann die Webseite weiter generiert werden, während gleichzeitig auf API-Anfragen gewartet wird.
Mithilfe des Event-Stacks werden diese Aktionen sortiert und fortlaufend abgearbeitet. Dies geschieht nach dem LIFO-Muster: Last In, First Out. Dieser Event-Stack, auch Event-Loop genannt, wartet darauf, dass im Stack eine Funktion ist die ausgeführt werden soll. Gleichzeitig werden neue Funktionen dem Stack hinzugefügt.
Die V8 Engine, welche auch im Browser ausgeführt wird, ermöglicht es zwar, dass Node.js ganz leicht mit JavaScript verwendbar ist, leider ist die Engine äußerst restriktiv. So lässt sich beispielsweise nicht auf das Dateisystem zugreifen oder Funktionen des Betriebssystems zu verwenden. Dies hat Sicherheitsgründe, da Webseiten nicht ungefragt auf das Dateisystem von Besuchern zugreifen können sollen.
Mit dem Node.js Core, welcher wie die Engine auch in C++ entwickelt wurde, werden Features bereitgestellt die weitaus mehr beherrschen als die V8 Engine. Die Funktionen werden mit Wrappern bereitgestellt, welche C++ Implementierungen unter JavaScript ermöglichen. Hierzu zählen auch Methoden mit denen http-Requests und -Responses verarbeitet werden können. Somit wird die V8 Engine mit weiteren, für Backend-Sprachen wichtigen Funktionen, angereichert.
Vor allem für Einsteiger ist Node.js sehr beliebt. JavaScript allein ist schon einfach zugänglich und für viele neue Webentwickler schnell zu erlernen. Mit der Einführung von Node.js ist es auch möglich das Backend in der gleichen Programmiersprache zu entwickeln, und auf bestehendes Know-How zurückzugreifen.
Node.js hat bei der Erstinstallation bereits eine Reihe äußerst nützlicher Module mitinstalliert. Beispielsweise, das url-Modul mit welchen Funktionen hinzukommen, welche die Arbeit mit URLs vereinfachen. Um weitere Module für den eigenen individuellen Zweck hinzuzufügen, gibt es den Node Package Manager (npm). Dieser steht ebenfalls bei der Erstinstallation zur Verfügung. Mit einer überwältigenden Anzahl von mehr als 350.000 Paketen bleibt kein Wunsch außen vor. Aber es ist auch Vorsicht geboten. Bei dieser Anzahl an Modulen gibt es einige Schwarze Schafe, welche im best-case einfach gar nichts tun, obwohl sie es anders versprechen. Im worst-case greifen sie Nutzerdaten ab, was in der Vergangenheit schon vorgekommen ist.
Aber wie erkennt man ein gutes npm-Modul? Es kann hilfreich sein, sich das Github-Repository genauer anzuschauen.
Node.js glänzt vor allem in Kombination mit JavaScript. Sowohl Frontend wie auch Backend in der gleichen Sprache schreiben zu können bietet für viele einen leichten Einstiegspunkt. Mithilfe des Package Managers lassen sich zahlreiche Pakete verwenden. Viele Module wurden bereits von anderen Entwicklern erstellt und erleichtern somit die eigene Entwicklung. Dank der Event-basierten Fähigkeiten und der asynchronen Kommunikation, ist die Entwicklung von dynamischen Webinhalten ein Kinderspiel.
Spannende Artikel und Infos zum Thema
Sie benötigen eine WordPress Agentur? Wir stehen als Ihre Experten zur Verfügung. Treten Sie mit uns in Kontakt und vereinbaren Sie ein unverbindliches Beratungsgespräch.
Das Content-Management-System WordPress basiert auf PHP, einer der gängigsten Programmiersprachen im Web. Ohne PHP funktioniert WordPress nicht. Umso wichtiger ist es somit, dass nicht...
mehr lesen
Die Sprache einer Website wird vielfach durch HTML-Tags übermittelt. Diese werden als HTML Sprachcodes bezeichnet und bestehen aus zwei Kleinbuchstaben. Festgelegt werden die HTML...
mehr lesen
Das WordPress Command Line Interface (kurz WP-CLI) bietet für alle, die mit dem Content Management System (CMS) WordPress arbeiten, einige Funktionen und kann dazu...
mehr lesen
Pagebuilder Plugin für WordPress funktionieren nach einem einfachen und zudem komfortablen Prinzip. Kinderleicht kann man damit eine Webseite aufbauen – oft sogar per Drag...
mehr lesen
Was ist ein Clickdummy? Im Bereich (Web-)Design und auch im Online Marketing kommen in vielen Fällen Clickdummys zum Einsatz. Es…
Was ist Ajax? Der Begriff Ajax kommt vor allem dann auf, wenn es um Entwicklung im Internet geht. Als Entwickler:in…
Was bedeutet Breadcrumb? Der Begriff Breadcrumb beschreibt eine sekundäre Navigation auf einer Website, welche die primäre Navigation des Menüs unterstützt….