Lesedauer: 13 Minuten
Als beliebteste Programmiersprache ist JavaScript auch eine der universellsten Softwareentwicklungstechnologien. Traditionell als Web-Frontend-Entwicklungstool verwendet, hat es sich auch zu einem wichtigen plattformübergreifenden mobilen Entwicklungstool als Basistechnologie für eine Vielzahl von Plattformen entwickelt, wie z.B. Apache Cordova/PhoneGap, React Native, NativeScript, Appcelerator Titanium.
Aber die Anwendungsbereiche für JavaScript enden hier nicht. In letzter Zeit gab es viel Wirbel um die Verwendung von JavaScript für die serverseitige Programmierung. Eines der Tools, die diesen Wandel in der Webentwicklung ankündigten, war Node.js.
- Was ist Node.js?
- Die Vorteile von Node.js
- ⊕ Robuster Technologie-Stack
- ⊕ Schnelle Verarbeitung und ereignisbasiertes Modell
- ⊕ Skalierbare Technologie für Microservices
- ⊕ Reichhaltiges Ökosystem
- ⊕ Starke Unterstützung durch Unternehmen
- ⊕ Nahtlose JSON-Unterstützung
- Die Nachteile von Node.js
- Θ Leistungsengpässe bei schweren Rechenaufgaben
- Θ Callback hell issue
- Θ Unreife der Werkzeuge
- Θ Wachsende Nachfrage nach erfahrenen Fachleuten
- Wie man Node.js lernt
- Node.js vs Ruby on Rails vs Django vs Symfony
- Make Node.js Shine
Was ist Node.js?
Node.js ist eigentlich kein Framework oder eine Bibliothek, sondern eine Laufzeitumgebung, die auf der V8 JavaScript-Engine von Chrome basiert.
Die Technologie wurde erstmals 2009 von Ryan Dahl auf der jährlichen europäischen JSConf vorgestellt und wurde sofort als „das aufregendste Stück Software im aktuellen JavaScript-Universum“ anerkannt.
Als Open-Source-Projekt wurde Node.js von Joyent, einem Anbieter von Cloud-Computing- und Hosting-Lösungen, gesponsert. Das Unternehmen investierte in eine Reihe anderer Technologien, wie z. B. das Ruby on Rails-Framework, und stellte Hosting-Dienste für Twitter und LinkedIn bereit. Letzteres war auch eines der ersten Unternehmen, das Node.js für sein mobiles Anwendungs-Backend verwendete. Später wurde die Technologie von einer Reihe von Technologieführern wie Uber, eBay, Walmart und Netflix übernommen, um nur einige zu nennen.
Es dauerte jedoch bis vor kurzem, bis die breite Akzeptanz von serverseitigem JavaScript mit Node.js begann. Das Interesse an dieser Technologie erreichte laut Google Trends im Jahr 2017 seinen Höhepunkt und bleibt hoch.
Node.js Downloads. Installieren Sie den Langzeitsupport und die neuesten Versionen von Node.js für Windows und MacOS hier. Zur Erinnerung: npm wird mit Node.js out-of-the-box ausgeliefert.
Dokumentation. Die Dokumentation und die Anleitungen zum Einstieg finden Sie unter diesem Link.
Node.js IDEs . Fast jeder populäre Code-Editor hat Unterstützung und Plugins für JavaScript und Node.js, so dass es nur darauf ankommt, wie Sie Ihre IDE an Ihre Coding-Bedürfnisse anpassen. Aber viele Entwickler loben spezielle Tools von VS Code, Brackets, Atom und WebStorm.
Frameworks. Die Verwendung von Middleware über reines Node.js ist eine gängige Praxis, die das Leben von Entwicklern einfacher macht. In einem separaten Artikel vergleichen wir beliebte Node.js-Frameworks und betrachten Express.js, Meteor, Sales.js, Koa.js, Keystone.js und Loopback.js.
Weitere Tools für das JavaScript-Ökosystem, die mit Node.js verwendet werden, finden Sie in einem eigenen Artikel.
Die Stärken und Schwächen von Node.js sind Gegenstand heftiger Diskussionen. Um die Sache klarzustellen, haben wir die Vor- und Nachteile von Node.js analysiert, um herauszufinden, welche Projekte von dieser Technologie profitieren können. Warum also Node.js verwenden?
Eine schnelle Erklärung, was Node.js ist (bitte abonnieren Sie es, wenn Sie mehr Videoinhalte wünschen)
Die Vorteile von Node.js
⊕ Robuster Technologie-Stack
JavaScript hat sich als unangefochtener Spitzenreiter unter den beliebtesten Programmiersprachen erwiesen. Node.js wiederum hat sich zu einem eigenständigen Namen in der Branche entwickelt. Mit insgesamt 368.985.988 Downloads und über 750 neuen Mitwirkenden, wie im Node-by-numbers-Bericht 2018 angegeben, scheint das Projekt stärker denn je zu sein.
Mit Node.js für Backend, erhalten Sie automatisch alle Vorteile der Full-Stack-JavaScript-Entwicklung, wie:
- bessere Effizienz und allgemeine Entwicklerproduktivität
- Code-Sharing und Wiederverwendung
- Geschwindigkeit und Leistung
- einfacher Wissensaustausch innerhalb eines Teams
- eine große Anzahl kostenloser Tools
Damit ist Ihr Team viel flexibler, die Entwicklung ist weniger zeitaufwendig und Sie erhalten als Ergebnis schnelle und zuverlässige Software. Entwickler, die in Frontend-JavaScript geschult sind, können mit minimalem Aufwand mit der Programmierung der Serverseite beginnen. Da auf beiden Seiten dieselbe Sprache verwendet wird, können Sie Code auf dem Frontend und dem Backend wiederverwenden, indem Sie ihn in Module verpacken und neue Abstraktionsebenen schaffen.
Entgegen einer weit verbreiteten Meinung sind Sie als Full-Stack-Entwickler keineswegs auf den traditionellen MEAN-Stack (MongoDB, Express.js, AngularJS und Node.js) beschränkt. Das einzige Muss ist in diesem Fall Node.js (für die Backend-Programmierung gibt es keine Alternative in JavaScript). Der Rest der Technologien innerhalb dieses Stacks ist optional und kann durch andere Tools mit ähnlicher Funktionalität ersetzt werden (lesen Sie über die Alternativen in unserem separaten Artikel).
⊕ Schnelle Verarbeitung und ereignisbasiertes Modell
Node.js ist schnell; das ist kein Mythos. Schauen Sie sich die Leistungstests von toptal.com an, die vergleichen, wie GO, PHP, Java und Node.js mit gleichzeitigen Anfragen umgehen. Es gibt eine Reihe von Gründen, warum Node.js solche Ergebnisse zeigt:
V8-Engine. Die in der Node.js-Implementierung verwendete Engine wurde ursprünglich für den Chrome-Browser entwickelt. Die in C++ geschriebene V8-Engine von Chrome wird verwendet, um in JavaScript geschriebene Funktionen in Maschinencode zu kompilieren, und sie erledigt diese Aufgabe mit einer beeindruckenden Geschwindigkeit. Sehen Sie sich einfach die Leistungsvergleiche im V8-Blog an. Dank der hohen Investitionen von Google in seine Engine zeigt V8 jedes Jahr Leistungsverbesserungen, und Node.js zieht alle Vorteile daraus.
Non-blocking Input/Output und asynchrones Request-Handling haben Node.js in die Lage versetzt, Anfragen ohne Verzögerungen zu verarbeiten. Im Kontext des Backends setzt die synchrone Verarbeitung voraus, dass der Code in einer Sequenz ausgeführt wird. Daher blockiert jede Anfrage einen Thread, so dass andere Anfragen darauf warten müssen, bis sie fertig sind. Die asynchrone Verarbeitung ermöglicht die Bearbeitung von Anfragen, ohne den Thread zu blockieren (non-blocking I/O). Nachdem eine Anfrage verarbeitet wurde, kann ein Callback ausgelöst und die Bearbeitung der Anfragen fortgesetzt werden. Das hilft Node.js, das Beste aus dem Single-Threading zu machen, was zu kurzen Antwortzeiten und gleichzeitiger Verarbeitung führt.
Ein weiterer Aspekt ist das ereignisbasierte Modell. Wenn eine gemeinsame Sprache für die Client- und Serverseite verwendet wird, erfolgt die Synchronisation schnell, was besonders für ereignisbasierte Echtzeitanwendungen hilfreich ist. Aufgrund seiner asynchronen, nicht blockierenden, single-threaded Natur ist Node.js eine beliebte Wahl für Online-Gaming, Chats, Videokonferenzen oder jede Lösung, die ständig aktualisierte Daten benötigt.
Die Beispiele sprechen für sich: Viele führende Unternehmen wechselten die Technologie und entwickelten Node.js-Anwendungen umgestiegen und haben signifikante Verbesserungen festgestellt – PayPal zum Beispiel bemerkte eine 35-prozentige Verringerung der Antwortzeit seit der Migration von Java.
⊕ Skalierbare Technologie für Microservices
Da es sich um eine leichtgewichtige Technologie handelt, ist die Verwendung von Node.js für Microservices-Architekturen eine gute Wahl. Dieser Architekturstil wird von Martin Fowler und James Lewis am besten beschrieben als „ein Ansatz zur Entwicklung einer einzelnen Anwendung als eine Reihe kleiner Dienste, die jeweils in einem eigenen Prozess ausgeführt werden und mit leichtgewichtigen Mechanismen, häufig einer HTTP-Ressourcen-API, kommunizieren.“
Durch die Aufteilung der Anwendungslogik in kleinere Module, Microservices, anstelle eines einzigen, großen monolithischen Kerns, wird eine bessere Flexibilität ermöglicht und die Grundlage für weiteres Wachstum gelegt. Infolgedessen ist es viel einfacher, weitere Microservices zu den bestehenden hinzuzufügen, als zusätzliche Funktionen in die grundlegende App-Funktionalität zu integrieren.
Monolithische Architektur vs. Microservice-Architektur in Kürze
Node.js ist laut dem Node.js User Survey Report 2017 die Technologie der Wahl, wenn es um den Aufbau und die Bereitstellung von Microservices-Ökosystemen geht. Etwa die Hälfte der Befragten nutzt Microservice-bezogene Technologien (namentlich Docker, die führende Software-Containerisierungsplattform), um Node.js-Web-Apps zu erstellen:
Anteil der Entwickler, die Docker-Containerisierung mit Node.js nutzen
Neuere Ergebnisse zeigen, dass Microservice-bezogene Technologien wie Docker und Kubernetes im Jahr 2018 eine steigende Nutzung erfahren haben, da dieser Architekturstil immer beliebter wird. Da jeder Microservice direkt über Streams mit der Datenbank kommuniziert, ermöglicht eine solche Architektur eine bessere Leistung und Geschwindigkeit der Anwendung. Zwei Frameworks, die häufig für Microservice-Architekturen verwendet werden, unterstützen diesen Ansatz. Das Express-Framework zählt IBM und Uber zu seinen Nutzern, während restify von npm und Netflix verwendet wird.
Als Beispiel für eine Live-Implementierung führte der Wechsel von Walmart zur Microservice-Architektur mit Node.js führte zu folgenden unmittelbaren Vorteilen:
- Über Nacht 20 Prozent mehr Konversionsrate im Allgemeinen und 98 Prozent mehr mobile Konversionsrate
- Eine hundertprozentige Betriebszeit am Black Friday (über 500 Millionen Seitenaufrufe)
- Einsparungen von bis zu 40 Prozent bei der Hardware und 20-50 Prozent beim Gesamtbetrieb
Ein weiteres leuchtendes Beispiel dafür, wie Node.js die Konkurrenz in puncto Leistung übertreffen kann, ist der Fall von GoDaddy. Bei der SuperBowl-Werbekampagne war das Unternehmen in der Lage, 10.000 Anfragen pro Sekunde ohne Ausfallzeiten zu bewältigen und dabei nur 10 Prozent der Hardware zu nutzen – dank Node.js.
⊕ Reichhaltiges Ökosystem
Ein Wort – npm, ein standardmäßiger Node.js-Paketmanager, dient auch als Marktplatz für Open-Source-JavaScript-Tools, die eine wichtige Rolle bei der Weiterentwicklung dieser Technologie spielen. Mit etwa 836.000 Bibliotheken, die derzeit in der npm-Registry verfügbar sind, und über 10.000 neuen Bibliotheken, die jede Woche veröffentlicht werden, ist das Node.js-Ökosystem ziemlich reichhaltig. Dieselbe Statistik zeigt, dass 97 Prozent der modernen Webanwendungen aus npm-Modulen bestehen. Und das ist ein Beweis für die unbestrittene Beliebtheit von Node.js unter Entwicklern.
Mit einer solchen Vielfalt an kostenlosen Tools, die mit wenigen Klicks zugänglich sind, gibt es ein riesiges Potenzial für die Nutzung von Node.js. Gleichzeitig erfreut sich Open-Source-Software wachsender Beliebtheit, da sie es ermöglicht, neue Lösungen zu entwickeln, die die Gesamtkosten für die Entwicklung und die Zeit bis zur Markteinführung senken.
⊕ Starke Unterstützung durch Unternehmen
Wie bereits erwähnt, wurde die Entwicklung von Node.js von Joyent unterstützt. Im Jahr 2015 wurde die Node.js Foundation gegründet, um „eine breite Akzeptanz zu ermöglichen und die Entwicklung von Node.js zu beschleunigen.“ IBM, Microsoft, PayPal, Fidelity und SAP wurden zu den Gründungsmitgliedern der Organisation.
Die Liste der Unternehmen, die Node.js in der Produktion einsetzen, wächst ständig. Derzeit umfasst sie fast dreihundert namhafte Unternehmen wie PayPal, Medium, Trello, Uber und Zendesk.
Sehr wenige Open-Source-Projekte haben jemals eine so starke Unterstützung durch die weltweit führenden Unternehmen erfahren. Und das deutet darauf hin, dass Node.js ein herausragendes Potenzial hat.
⊕ Nahtlose JSON-Unterstützung
Obwohl andere Backend-Technologien wie PHP und Ruby on Rails das JSON-Format für die Kommunikation nutzen können, tut Node.js dies ohne Konvertierung zwischen binären Modellen und nutzt JavaScript. Dies ist besonders praktisch, wenn Sie RESTful-APIs für NoSQL-Datenbanken wie MongoDB – der Buchstabe M im MEAN-Stack – erstellen müssen. Diese nahtlose Kommunikation mit einem der wichtigsten Datenübertragungsstandards ist ein weiterer Vorteil des JavaScript-Ökosystems.
Die Nachteile von Node.js
Θ Leistungsengpässe bei schweren Rechenaufgaben
Der größte Nachteil von Node.js ist bis heute seine Unfähigkeit, CPU-gebundene Aufgaben zu verarbeiten. Aber um zu verstehen, was die Wurzeln dieses Problems sind, brauchen wir ein wenig Kontext. Beginnen wir mit den Grundlagen, mit JavaScript selbst.
Wie wir wissen, ist Node.js eine Laufzeitumgebung, die JavaScript auf der Serverseite ausführt. Als Frontend-Programmiersprache verwendet JavaScript einen einzelnen Thread, um Aufgaben schnell zu bearbeiten. Threading ist dafür nicht erforderlich, da die Aufgaben in JavaScript leichtgewichtig sind und nur eine geringe CPU-Leistung erfordern.
Wenn wir nun zu Node.js zurückkehren, wissen wir, warum es als single threaded gilt: Es verarbeitet JavaScript, das single threaded ist. Ein nicht-blockierendes Ein-/Ausgabemodell bedeutet, dass Node.js auf den Client-Aufruf zum Starten einer Anfrage antwortet und die Aufgabe in der Zeit bearbeitet, in der es den Rückruf auslöst, wenn die Aufgabe bereit ist. Bei der asynchronen Verarbeitung von Aufgaben führt Node JS-Code auf einem einzigen Thread auf Ereignisbasis aus. Das nennt man eine Event-Schleife.
Das Problem tritt auf, wenn Node.js eine CPU-gebundene Aufgabe erhält: Immer wenn eine umfangreiche Anfrage in der Ereignisschleife eintrifft, würde Node.js die gesamte verfügbare CPU einsetzen, um sie zuerst zu verarbeiten und dann andere Anfragen in der Warteschlange zu beantworten. Das führt zu einer langsamen Verarbeitung und einer allgemeinen Verzögerung in der Ereignisschleife, weshalb Node.js nicht für schwere Berechnungen empfohlen wird.
Im Jahr 2018 wurde jedoch Multithreading in Node.js als experimentelles Feature mit dem Update 10.5.0 eingeführt. Ein neues Feature namens Worker-Threads-Modul kann verwendet werden, um zusätzliche Threads aus einem Thread-Pool zu nutzen, um CPU-gebundene Aufgaben auszuführen. Dies ist jedoch nur auf Maschinen mit mehreren Kernen möglich, da Node.js nach wie vor die Nutzung eines Kerns für einen Thread erlaubt. Das bedeutet, dass schwere parallele Prozesse auf einem anderen Thread ausgeführt werden können. Diese Funktion ist in Node.js Version 12 noch experimentell, wurde aber deutlich verbessert.
Θ Callback hell issue
Aufgrund seiner asynchronen Natur ist Node.js stark auf Callbacks angewiesen, also auf Funktionen, die ausgeführt werden, nachdem jede Aufgabe in der Warteschlange beendet ist. Eine Reihe von Aufgaben in der Warteschlange im Hintergrund zu halten, jede mit ihrem Callback, kann zur sogenannten Callback-Hölle führen, die sich direkt auf die Qualität des Codes auswirkt. Einfach ausgedrückt handelt es sich um eine „Situation, in der Rückrufe mehrere Ebenen tief in andere Rückrufe verschachtelt sind, was das Verständnis und die Wartung des Codes erschweren kann“
Beispiel für Code mit verschachtelten Rückrufen
Bildquelle: callbackhell.com
Dies wird jedoch oft als Zeichen für schlechte Codierungsstandards und mangelnde Erfahrung mit JavaScript und insbesondere Node.js angesehen. Der oben dargestellte Code kann in wenigen Schritten refaktorisiert und vereinfacht werden, wie auf callbackhell.com gezeigt wird.
Θ Unreife der Werkzeuge
Obwohl die Kernmodule von Node.js recht stabil sind und als ausgereift angesehen werden können, gibt es viele Werkzeuge in der npm-Registry, die entweder von schlechter Qualität oder nicht richtig dokumentiert/getestet sind. Außerdem ist die Registry selbst nicht gut genug strukturiert, um die Tools nach ihrer Bewertung oder Qualität anzubieten. Daher könnte es schwierig sein, die beste Lösung für Ihre Zwecke zu finden, ohne zu wissen, wonach Sie suchen müssen.
Die Tatsache, dass die Node.Die Tatsache, dass das Node.js-Ökosystem größtenteils quelloffen ist, hat auch ihre Auswirkungen. Während die Qualität der Node.js-Kerntechnologie von Joyent und anderen wichtigen Mitwirkenden überwacht wird, fehlt es dem Rest der Tools möglicherweise an der Qualität und den hohen Codierungsstandards, die von globalen Organisationen festgelegt wurden.
Θ Wachsende Nachfrage nach erfahrenen Fachleuten
Entgegen einer weit verbreiteten Annahme sind nicht alle JavaScript-Entwickler auch Node.js-Entwickler. Die Beherrschung der serverseitigen JavaScript-Programmierung erfordert einen erheblichen Aufwand und einen gewissen Hintergrund in der Backend-Entwicklung. Aufgrund der steilen Lernkurve ist die Zahl der Node.js-Ingenieure deutlich geringer als die Gesamtzahl der JS-Profis.
Da der Hype um Node.js weiter zunimmt, steigt die Nachfrage nach erfahrenen Fachleuten in diesem Bereich.
Es gibt eine große Wissenslücke zwischen Ingenieurstudenten, die in den Beruf einsteigen, und den Bedürfnissen der Arbeitgeber
Quelle: HackerRank
Da es Millionen von JavaScript-Entwicklern gibt, könnte es schwierig sein, einen qualifizierten Node.js-Experten für Ihr Projekt zu finden. In diesem Fall sollten Sie Ihre Suche nicht auf ein einziges Land beschränken. Die Beschaffung technischer Talente im Ausland ist in der IT-Branche längst zur Norm geworden.
Wie man Node.js lernt
Hier ist Ihr Einstiegspaket zum Verständnis und zur Arbeit mit Node.js.
Turorials. Beschränken Sie sich nicht auf die offiziellen Dokumente: Sehen Sie sich tonnenweise kostenlose Lektionen auf W3Schools an, besuchen Sie internationale Workshops von Nodeschool und nutzen Sie natürlich die Bibliothek mit kostenlosen Tutorials von freeCodeCamp.
Kurse. Wenn Sie ein engagierter Student sind, beginnen Sie einen Online-Kurs über Node.js: Hier ist einer auf PluralSight, und natürlich einer auf Udemy.
Interaktives Lernen. Hier finden Sie kostenlose und kostenpflichtige Ressourcen, mit denen Sie Node.js mithilfe von interaktiven Lektionen und Übungen lernen können. Eine der beliebtesten ist The Art of Node.
Community. Siehe die offizielle Liste der von der Community betriebenen Node.js-Projekte. Ein kleiner Tipp: Recherchieren Sie Facebook-Gruppen und Communities in Ihrer Region/Ihrer Muttersprache. Und natürlich die Node.js-Communities auf Reddit, ein Tag auf StackOverflow und das Thema auf Quora.
Node.js vs Ruby on Rails vs Django vs Symfony
Es gibt nicht viele Technologien, die es mit der Popularität von Node.js oder der Marktnachfrage aufnehmen können. Wenn wir uns jedoch die Alternativen für die serverseitige Programmierung ansehen, sehen wir mindestens drei weitere leuchtende Sterne am Himmel. Das sind Ruby on Rails, Django und Symfony. Mal sehen, ob sie mit den Vorteilen von Node.js mithalten können und dessen Nachteile teilen.
Vergleich der Statistiken von Node.js, Rails, Django und Symfony
Quelle: StackShare
Ruby on Rails ist bekannt für seine einfache, aber eigenwillige Sprache und die Verfügbarkeit von Gems – Rails‘ eigenem Ökosystem von benutzerdefinierten Paketen. Ruby selbst ist eine intuitive und einsteigerfreundliche Sprache mit einer unterstützenden und engagierten Community, die Code zu RubyGems beiträgt. Rails wurde für die schnelle Entwicklung und das Prototyping entwickelt, wird aber auch erfolgreich von Marken wie GitHub, Twitter und Airbnb eingesetzt, was seine breite Palette von Anwendungsfällen beweist. Besonders beeindruckend ist seine Datenmigrationsfunktionalität – im Gegensatz zu Node.js, das zusätzliche Pakete verwendet, verfügt Rails bereits über eine Funktion, mit der Sie Ihre Datenbank einfach und konsistent manipulieren können.
Wann sollten Sie Rails gegenüber Node.js einsetzen? Rails kann nicht mit der Leistung und Skalierbarkeit von Node konkurrieren, aber für eine schnelle Entwicklung kann Rails die bessere Wahl sein. Node.js muss Module von Drittanbietern verwenden, um diese Entwicklungsgeschwindigkeit zu erreichen, aber Ruby hat alles auf unkonventionelle Weise. Was die Sprache angeht, hat kein Tool einen eindeutigen Vorteil – während Node.js eine hohe Nachfrage, aber ein geringes Angebot hat, ist der Talentpool von Ruby zunächst kleiner.
Django ist ein Web-Framework auf Python, der am schnellsten wachsenden Programmiersprache nach den Daten auf StackOverflow. Es wird als Werkzeug für Perfektionisten mit Deadlines vermarktet und wurde entwickelt, um Anwendungen so schnell wie möglich und auf möglichst strukturierte, sichere und leicht verständliche Weise zu erstellen. Zusammen mit Python gilt Django auch als weniger lernintensiv. Während die Arbeit mit Node.js umfangreiche JavaScript-Kenntnisse erfordert, ist Django eine Technologie, bei der die Batterien im Lieferumfang enthalten sind. Es verfügt über ein eingebautes Admin-Panel, mit dem Sie Ihre Datenbanken und Vorlagen einfach aktualisieren und pflegen können, um Ihre Arbeit zu beschleunigen.
Wann sollten Sie Django gegenüber Node.js einsetzen? Im Vergleich zu Node.js ist Django ein einsteigerfreundliches Tool. Abgesehen von der Sprache selbst gibt es keinen wirklichen Grund, sich für das eine oder das andere zu entscheiden. Es ist eher eine Frage des Komforts und der Erfahrung mit JavaScript oder Python als der spezifischen Anwendungsfälle.
Symfony ist ein PHP-Framework, das automatisch über mehr als 20 Jahre Dokumentation und eine große, aktive Community verfügt. Mehr als 80 Prozent des Webs werden mit PHP betrieben, wobei Projekte wie Facebook, Baidu oder jede andere Website auf WordPress laufen. Obwohl Symfony nur eines der PHP-Frameworks auf dem Markt ist, ist es beeindruckend stabil, skalierbar und eignet sich gut für große Projekte. Es verwendet auch eine Templating-Engine namens Twig, die ähnlich wie viele PHP-basierte Content-Management-Systeme funktioniert.
Wann sollten Sie Symfony gegenüber Node.js verwenden? Symfony unterstützt natürlich CMS-Funktionen wie Templates und Admin-Dashboards, die es ermöglichen, Blogs, Nachrichtenseiten und eCommerce-Shops zu betreiben. Einige der Beispiele sind Yahoo Answers, Dailymotion und National Geographic.
Make Node.js Shine
Natürlich ist die Technologie mit all den aufgeführten Vor- und Nachteilen von Node.js kein Allheilmittel. Aber das sind Java, .Net Framework oder PHP auch nicht. Dennoch gibt es bestimmte Fälle, in denen jede der aufgeführten Technologien am besten funktioniert. Bei Node.js handelt es sich um Echtzeitanwendungen mit intensiver E/A, die Geschwindigkeit und Skalierbarkeit erfordern.
Das können soziale Netzwerke, Spiele-Apps, Live-Chats oder Foren ebenso sein wie Börsensoftware oder Anzeigenserver, bei denen Geschwindigkeit alles ist. Schnell und skalierbar ist Node.js die Technologie der Wahl für datenintensive Echtzeit-IoT-Geräte und -Anwendungen.
Node.js hat JavaScript zur bevorzugten Full-Stack-Technologie für die Entwicklung von Webanwendungen gemacht. Aufgrund seiner nicht blockierenden Architektur eignet sich Node.js gut für die Codierung und Übertragung von Video und Audio, das Hochladen mehrerer Dateien und das Datenstreaming. Letzteres kann für Software in der Reisebranche äußerst nützlich sein, wenn Daten von verschiedenen APIs unterschiedlicher Anbieter bezogen werden müssen.
In letzter Zeit wurde Node.js aktiv in Unternehmenssoftware eingesetzt. Zwar wird darüber noch viel gestritten, aber viele große Unternehmen und globale Organisationen wie Capital One und die NASA haben Node.js bereits eingeführt. Und das Node.js-Ökosystem für Unternehmen reift weiter mit Tools wie IBM API Connect, Triton von Joyent, N|Solid von NodeSource, Red Hat OpenShift, Trace von RisingStack und anderen.
Dieser Beitrag ist ein Teil unserer Serie „The Good and the Bad“. Weitere Informationen über die Vor- und Nachteile der beliebtesten Technologien finden Sie in den anderen Artikeln der Serie:
Das Gute und das Schlechte von Xamarin Mobile Development
Das Gute und das Schlechte von JavaScript Full Stack Development
Das Gute und das Schlechte von ReactJS und React Native
Das Gute und das Schlechte von Swift Programming Language
Das Gute und das Schlechte von .NET Framework Programmierung
Das Gute und das Schlechte von Angular Entwicklung
Das Gute und das Schlechte von Selenium Test Automation Tool
Das Gute und das Schlechte von Android App Entwicklung