Node.js ist für viele Entwickler/innen, die an Webanwendungen arbeiten, zur bevorzugten Laufzeitumgebung geworden. Node.js wurde entwickelt, um Code auszuführen, der in JavaScript, einer der beliebtesten Programmiersprachen der Welt, geschrieben wurde, und macht die Erstellung von serverseitigen Anwendungen für eine große Gemeinschaft von Entwicklern zugänglich.

Node.js unterstützt die Wiederverwendbarkeit von Code durch JavaScript-Bibliotheken, aber die Auswahl der besten Bibliotheken kann entmutigend sein. Nützliche Bibliotheken können die Entwicklungszeit beschleunigen und haben eine ganze Reihe von Vorteilen für deine Webanwendung, z. B. schnellere Ladezeiten und eine geringere Größe des Anwendungspakets.

Bei der Auswahl einer Bibliothek solltest du die Komplexität der Anwendung, die Community hinter der Bibliothek, die Häufigkeit der Updates und die Qualität der Dokumentation berücksichtigen.

Die Bibliotheken in Node.js werden mit dem Node.js-Paketmanager npm verwaltet, mit dem du viele Open-Source-Bibliotheken installieren kannst. Wir haben 13 wichtige Bibliotheken für Node.js herausgesucht, die das Leben eines Webentwicklers leichter machen.

Was ist Node.js?

Node.js ist eine serverseitige Open-Source-Laufzeitumgebung für JavaScript-Code. Seine asynchrone Architektur und plattformübergreifende Kompatibilität machen es zu einer beliebten Grundlage für die Webentwicklung.

Node.js verwendet eine ereignisgesteuerte und nicht blockierende E/A, was es in verteilten Echtzeitanwendungen, die mit vielen Daten arbeiten, sehr effizient macht.

Was ist eine Node.js-Bibliothek?

Eine Bibliothek oder ein Modul ist vorgefertigter Code, der häufig benötigte Aufgaben abstrahiert. Mit Bibliotheken kannst du den Programmierprozess beschleunigen und die Wiederverwendbarkeit von Code fördern, damit deine Arbeit „DRY“ (don’t repeat yourself) bleibt.

Im Gegensatz zu Frameworks enthalten Bibliotheken fertige Funktionen, die du in jeder Entwicklungsphase in ein Projekt einbauen kannst. Ein Framework hingegen liefert in der Regel ein Grundgerüst für eine ganze Anwendung und hat oft einen großen Einfluss darauf, wie diese entwickelt wird.

Node.js-Bibliotheken, die arbeiten, damit du es nicht musst

Schauen wir uns 13 dieser Node.js-Bibliotheken an und erkunden wir ihre Vorteile.

1. Sequelize

Sequelize ist ein auf Versprechen basierendes Node.js Object-Relational Mapper (ORM) Tool, das Entwicklern die Arbeit mit relationalen Datenbanken erleichtert. Es unterstützt Datenbanken wie PostgreSQL, MySQL, MariaDB, SQLite und viele mehr.

Mithilfe von JavaScript-Objekten modelliert Sequelize die Struktur von Datenbanktabellen und stellt eine Verbindung zur gewünschten relationalen Datenbank her, um Daten abzufragen und umzuwandeln. Anschließend analysiert es die abgerufenen Daten und gibt sie als JavaScript-Objekt zurück.

The logo of the Sequelize Node.js library.
Das Sequelize-Logo.

Funktionen und Vorteile der Sequelize-Bibliothek

  • Verbindet sich mit Datenbanken und führt Operationen aus, ohne rohe SQL-Abfragen zu schreiben
  • Reduziert SQL-Injection-Schwachstellen und SQL-Injection-Angriffe
  • Kompatibel mit GraphQL

2. CORS

CORS ist ein Node.js-Paket zur Bereitstellung von Cross-Origin Resource Sharing (CORS) als Middleware, die auf Connect/Express aufbaut.

Das CORS-Paket bildet einen Wrapper um die Node.js-Route-Middleware und ermöglicht es der Anwendung, auf Ressourcen aus anderen Domänen als der eigenen zuzugreifen. Es nimmt mehrere Parameter auf, um die Cross-Origin-Optionen zu konfigurieren, darunter Herkunft, Header und mehr.

Screenshot of CORS library code in a text editor.
Ein Beispiel für CORS-Code (Konfiguration).

Merkmale und Vorteile der CORS-Bibliothek

  • Verringert den Umfang des Codes, der zur Aktivierung von CORS in einer Webanwendung erforderlich ist
  • Ermöglicht die Konfiguration von Domains, die auf der Erlaubnisliste stehen, und erlaubt es dem Benutzer, CORS für ausgewählte Ursprünge zu aktivieren und andere zu blockieren
  • Bietet eine nahtlose Fehlerbehandlung und hilft Entwicklern bei der Analyse von Sicherheitsbedrohungen durch verdächtige Ursprünge

3. Nodemailer

Nodemailer erleichtert das Versenden von E-Mails vom Node.js-Server aus. Er verwendet ein Transportobjekt, das unter anderem das Simple Mail Transfer Protocol (SMTP) unterstützt. Dieses Transportobjekt nimmt from, to, subject, body und andere Parameter als Eingabe, um eine Nachricht zu erstellen.

The logo of the Nodemailer Node.js library.
Das Nodemailer-Logo.

Funktionen und Vorteile der Nodemailer-Bibliothek

  • Ein einziges Modul, das mehrere Transportwege unterstützt, darunter SMTP, Amazon Simple Email Service (SES), Sendmail und Stream
  • Unterstützt Text- und HTML-Inhalte als Textkörper der E-Mail
  • Konfiguriert Benachrichtigungen über den Versandstatus und unterstützt Massenversand von E-Mails

4. Passport

Passport ist eine modulare Authentifizierungs-Middleware für Node.js. Passport bietet über 500 Authentifizierungsstrategien, darunter Google, Facebook, Twitter und andere benutzerdefinierte und Single Sign-On (SSO) Anbieter. Zu den Strategien gehören die normale Authentifizierung mit Benutzernamen und Passwort, die delegierte Authentifizierung mit OAuth für Social-Media-Seiten und OpenID für die föderierte Authentifizierung.

The logo of the Passport Node.js library.
Das Passport-Logo.

Funktionen und Vorteile der Passport-Bibliothek

  • Integrierte SSO-Authentifizierung für Social-Media-Seiten mit minimalem Code
  • Konfiguriert dauerhafte Anmeldeinformationen über mehrere Sitzungen hinweg
  • Vermeidet das Anlegen neuer Routen in der Anwendung durch die Verwendung einer ungehinderten Konfiguration mit Express und Connect Middleware

5. Async

Async ist ein leistungsstarkes Node.js-Dienstprogrammmodul, das Entwicklern hilft, mit asynchronem JavaScript zu arbeiten, indem es mit JavaScript-„async“ oder Callback-akzeptierenden Funktionen arbeitet. Wenn du dem Async-Modul ein Array von Callbacks übergibst, führt es diese aus und wickelt sie ein, um ein Versprechen zurückzugeben.

The logo of the Async Node.js library.
Das Async-Logo.

Funktionen und Vorteile der Async-Bibliothek

  • Bietet etwa 70 Hilfsfunktionen, um asynchrone Kontrollflüsse einfach zu entwickeln
  • Bietet eine „Parallel“-Funktion für die Bearbeitung mehrerer Anfragen an einen Host (was sonst viel Code erfordern würde)
  • Hilft dabei, die verschachtelte „Callback-Hölle“ in JavaScript zu beseitigen

6. Winston

Winston ist eine Node.js Logging-Bibliothek, die universelles Logging mit mehreren Transporten unterstützt. Diese Transporte speichern und konfigurieren die Logs entsprechend den Bedürfnissen deiner Anwendung.

Mit der Funktion createLogger kannst du neben den Standardtransporten auch benutzerdefinierte Logger erstellen, die verfügbare Transportoptionen wie Konsolen, Dateien und Datenbanken nutzen. Benutzerdefinierte Logger können auch mit benutzerdefinierten Transporten verwendet werden.

Screenshot of Winston code in a text editor.
Ein Beispiel für Winston-Code.

Funktionen und Vorteile der Winston-Bibliothek

  • Zentrale Kontrolle über das Logging durch eine einzige Konfigurationsdatei
  • Ermöglicht anpassbare Protokollformate, z. B. die Speicherung des Protokolls im JSON-Format oder als Text
  • Bietet anpassbare Logging-Levels, die du entsprechend den Anforderungen deiner Anwendung konfigurieren kannst

7. Mongoose

Mongoose ist ein auf Node.js basierendes Objektmodellierungstool für MongoDB, das auch als Objektdatenmodellierungsbibliothek (ODM) bekannt ist und eine Vielzahl von Funktionen wie Hooks, Modellvalidierung, Verbindung und Abfragen bietet.

Mongoose bietet eine schemabasierte Lösung für Anwendungsdaten, indem es auf der Anwendungsebene ein einziges Schema durchsetzt, das eine Sammlung in MongoDB bildet. Jedes Schema ist mit einem Mongoose-Modell verknüpft, mit dem du Abfragen gegen eine MongoDB-Sammlung durchführen kannst, z. B. das Abrufen, Aktualisieren und Löschen von Daten.

The logo of the Mongoose Node.js library.
Das Mongoose-Logo.

Funktionen und Vorteile der Mongoose-Bibliothek

  • Einfache Abstraktion von Abfragen, so dass Entwickler weniger Code für MongoDB-Transaktionen schreiben müssen
  • Eingebaute Datenvalidierung zur Festlegung von Regeln, welche Art von Daten in der Datenbank hinzugefügt oder aktualisiert werden können
  • Implementiert eine vordefinierte Struktur für die MongoDB-Sammlung, die Entwicklern eine Standard-MongoDB-Instanz zur Verfügung stellt
  • Ermöglicht die Verkettung von Abfragen für die Arbeit mit mehreren Abfragen

8. Socket.IO

Socket.I O ist eine Node.js-Kommunikationsbibliothek, die eine bidirektionale, ereignisbasierte Echtzeitkommunikation zwischen einem Client-Browser und dem Server herstellt.

Sie nutzt Engine.IO, um eine Low-Level-Verbindung zwischen dem Server und dem Client herzustellen, wobei ein digitaler Handshake über HTTP Long-Polling verwendet wird. Sobald die Verbindung hergestellt ist, erfolgt die Kommunikation zwischen Client und Server in Echtzeit über TCP.

The logo of the Sockets.IO Node.js library.
Das Sockets.IO-Logo.

Funktionen und Vorteile der Sockets.IO-Bibliothek

  • Bietet einen Kommunikationskanal mit geringem Aufwand über WebSocket und ermöglicht HTTP Long-Polling als Fallback-Option
  • Skalierbar und ermöglicht es Servern, Ereignisse einfach an mehrere Clients zu senden
  • Unterstützt Multiplexing durch Namespaces, was die Anzahl der verwendeten TCP-Verbindungen minimiert und die Socket-Ports auf dem Server reduziert

9. Lodash

Lodash ist eine Hilfsbibliothek, die Entwicklern hilft, prägnanten und wartbaren JavaScript-Code zu schreiben. Sie verfügt über mehr als 200 Utility-Funktionen zur Vereinfachung alltäglicher Programmieraufgaben, einschließlich Typüberprüfung, einfacher mathematischer Operationen und mehr.

The logo of the Lodash Node.js library.
Das Lodash-Logo.

Funktionen und Vorteile der Lodash-Bibliothek

  • Bewahrt die Kompatibilität zwischen verschiedenen Browsern mit Hilfe von Polyfills
  • Bietet integrierte Lösungen für die Arbeit mit einem Array von Objekten und ermöglicht Operationen wie filter, find und flatMap
  • Hilft Entwicklern, Wiederholungen zu vermeiden und sauberen Code zu pflegen

10. Axios

Axios ist ein auf Versprechen basierender HTTP-Client für Browser und Node.js. Er übernimmt bei Bedarf auch die Umwandlung von Request- und Response-Daten aus dem Browser oder Node.js.

Axios ist isomorph, d.h. es kann auf dem Server und dem Client mit der gleichen Codebasis laufen. Für die HTTP-Kommunikation verwendet Axios ein natives HTTP-Modul auf der Serverseite und XMLHttpRequest auf der Clientseite.

The logo of the Axios Node.js library.
Das Axios-Logo.

Funktionen und Vorteile der Axios Bibliothek

  • Bietet integrierte API-Funktionen für gängige HTTP-Datentypen wie GET, PUT, POST, und DELETE
  • Bietet mehr Sicherheit durch den Schutz vor Cross-Site Request Forgery (CSRF) bei HTTP-Anfragen im Internet
  • Einfaches Umwandeln von Antwortdaten in JSON durch automatische JSON-Datentransformation

11. Puppeteer

Puppeteer ist eine Node.js-Bibliothek, die Chrome automatisiert, indem sie eine High-Level-API zur Steuerung von Chrome/Chromium über das DevTools-Protokoll bereitstellt. Sie automatisiert Frontend-Tests, einschließlich Tests zur Bearbeitung von Anfragen, zum Auffinden und Vergleichen von UI-Elementen, Leistungstests und mehr.

Entwickler/innen können das Puppeteer-Paket in ihren Code importieren, um eine Chromium-Instanz zu erstellen. Diese Instanz kann dann Tests automatisieren, indem sie mit der Browser-Engine kommuniziert.

The logo of the Puppeteer Node.js library.
Das Puppeteer-Logo.

Funktionen und Vorteile der Puppeteer-Bibliothek

  • Kein Setup, einfach zu konfigurieren und keine zusätzlichen Treiber erforderlich
  • Durchforstet Websites, um vorgerenderte Inhalte zu erzeugen
  • Kompatibel mit gängigen Test-Frameworks wie Jest und Mocha

12. Multer

Multer ist eine Middleware-Bibliothek für Node.js. Sie wurde auf der Grundlage des HTML-Formularparsers busboy geschrieben und verarbeitet mehrteilige und mehrförmige Daten.

Nach der Initialisierung der Multer-Instanz nimmt sie ein dest -Objekt als eine ihrer Optionen auf, um anzugeben, wo die hochgeladene Datei auf dem Server gespeichert werden soll. Multer sendet ein file Objekt zusammen mit der Upload-Anforderung, die dann von der Multer-API geparst und an den Zielspeicherort gesendet wird.

Screenshot of Multer code in a text editor.
Ein Beispiel für Multer-Code mit HTML-Formularauszeichnung.

Funktionen und Vorteile der Multer-Bibliothek

  • Macht rohe HTTP-Anfragedaten durch eingebautes Parsing besser für die Speicherung zugänglich
  • Ermöglicht die Angabe des Kodierungstyps für die Datei, was eine zusätzliche Sicherheitsebene für die hochgeladene Datei darstellt
  • Filtert und begrenzt die Upload-Optionen für Dateityp und -größe

13. Dotenv

Dotenv ist eine Node.js-Dienstprogramm-Bibliothek, die Umgebungsvariablen in der Anwendung verwaltet und sensible Konfigurationsvariablen schützt. Dotenv hilft der Anwendung auch, die Zwölf-Faktoren-Methode beim Speichern von Umgebungsvariablen zu befolgen. Wenn du die Dotenv-Bibliothek frühzeitig konfigurierst, werden die Umgebungsvariablen automatisch von .env nach provess.env übertragen.

The logo of the Dotenv Node.js library.
Das Dotenv-Logo.

Funktionen und Vorteile der Dotenv-Bibliothek

  • Hilft dir, Geheimnisse – wie API-Schlüssel und Anmeldedaten – vom Quellcode zu trennen und lässt jeden Entwickler eine .env-Datei für den eigenen Gebrauch erstellen
  • Trägt nicht zur Größe der Anwendung bei, da das Modul keine Abhängigkeiten aufweist

Zusammenfassung

Node.js hat eine Fülle nützlicher Bibliotheken, aber die Auswahl der besten für dein Projekt kann schwierig sein. Einige der Node.js-Bibliotheken, die wir hier vorgestellt haben, könnten „Must-haves“ für deine nächste Anwendung sein.

Wenn du zum Beispiel hauptsächlich mit MongoDB arbeitest, kann Mongoose dein Lebensretter sein. CORS kann dir dabei helfen, Inhalte von verschiedenen Domains auszuliefern, und Dotenv ist äußerst praktisch, wenn du Code – aber keine Geheimnisse – innerhalb eines Teams teilen musst.

Nachdem du nun einen Blick auf einige der wichtigsten Node.js-Pakete geworfen hast, ist es an der Zeit, deine eigene Node.js-Anwendung zu erstellen. Mit den Plattformen Application Hosting und Database Hosting von Kinsta kannst du deinen Entwicklungsprozess beschleunigen. Mit dem Hobby-Tier von Kinsta kannst du kostenlos loslegen und aufsteigen, wenn deine Anwendung die Welt im Sturm erobert.

Steve Bonisteel Kinsta

Steve Bonisteel is Technical Editor bij Kinsta. Hij begon zijn schrijverscarrière als verslaggever en achtervolgde ambulances en brandweerwagens. Sinds eind jaren negentig schrijft hij over internetgerelateerde technologie.