Express.js ist das beliebteste Backend-Framework für Node.js und ein wichtiger Teil des JavaScript-Ökosystems.
Es wurde entwickelt, um Single-Page-, Multi-Page- und hybride Webanwendungen zu erstellen. Es ist auch zum Standard für die Entwicklung von Backend-Anwendungen mit Node.js geworden und ist der Backend-Teil des so genannten MEVN-Stacks.
Der MEVN ist ein kostenloser und quelloffener JavaScript-Software-Stack für die Erstellung dynamischer Webseiten und Webanwendungen, der aus folgenden Komponenten besteht:
- MongoDB: MongoDB ist die Standard-NoSQL-Datenbank
- Express.js: Das Standard-Webapplikations-Framework für die Entwicklung von Webanwendungen
- Vue.js: Das progressive JavaScript-Framework für die Entwicklung von Front-End-Webanwendungen
- Node.js: JavaScript-Engine, die für skalierbare serverseitige und Netzwerkanwendungen verwendet wird.
In diesem Leitfaden lernst du die wichtigsten Funktionen des Express.js-Frameworks kennen und erfährst, wie du deine erste Anwendung erstellst.
Was ist Express.js?
Express.js, manchmal auch als „Express“ bezeichnet, ist ein minimalistisches, schnelles und Sinatra-ähnliches Node.js-Backend-Framework, das robuste Funktionen und Werkzeuge für die Entwicklung skalierbarer Backend-Anwendungen bietet. Es bietet dir ein Routing-System und vereinfachte Funktionen, mit denen du das Framework durch die Entwicklung leistungsfähigerer Komponenten und Teile je nach Anwendungsfall erweitern kannst.
Das Framework bietet eine Reihe von Werkzeugen für Webanwendungen, HTTP-Anfragen und -Antworten, Routing und Middleware für die Entwicklung und den Einsatz von großen, unternehmenstauglichen Anwendungen.
Es bietet auch eine Kommandozeilenschnittstelle (CLI) namens Node Package Manager (NPM), über die Entwickler/innen die entwickelten Pakete beziehen können. Außerdem zwingt es die Entwickler dazu, dem DRY-Prinzip (Don’t Repeat Yourself) zu folgen.
Das DRY-Prinzip zielt darauf ab, die Wiederholung von Softwaremustern zu reduzieren, sie durch Abstraktionen zu ersetzen oder Datennormalisierungen zu verwenden, um Redundanzen zu vermeiden.
Wofür wird Express.js verwendet?
Express.js wird im JavaScript/Node.js Ökosystem für eine Vielzahl von Dingen verwendet – du kannst damit Anwendungen, API-Endpunkte, Routing-Systeme und Frameworks entwickeln.
Im Folgenden findest du eine Liste mit einigen Anwendungsarten, die du mit Express.js entwickeln kannst.
Single-Page-Anwendungen
Single-Page Applications (SPAs) sind der moderne Ansatz der Anwendungsentwicklung, bei dem die gesamte Anwendung in eine einzige Indexseite geroutet wird. Express.js ist ein hervorragendes Framework, um eine API zu erstellen, die diese SPA-Anwendungen miteinander verbindet und Daten konsistent bereitstellt. Einige Beispiele für Single Page Applications sind Gmail, Google Maps, Airbnb, Netflix, Pinterest, Paypal und viele mehr. Unternehmen nutzen SPAs, um ein flüssiges, skalierbares Erlebnis zu schaffen.
Tools für die Zusammenarbeit in Echtzeit
Kollaborationstools erleichtern die tägliche Arbeit und Zusammenarbeit in Unternehmen. Mit Express.js kannst du mühelos kollaborative und Echtzeit-Netzwerkanwendungen entwickeln.
Mit Express.js kannst du problemlos kollaborative und vernetzte Echtzeitanwendungen entwickeln. Das Framework wird auch für die Entwicklung von Echtzeitanwendungen wie Chat- und Dashboard-Anwendungen verwendet, bei denen die Integration von WebSocket in das Framework ganz einfach ist.
Express.js übernimmt den Routing- und Middleware-Teil des Prozesses, so dass sich die Entwickler/innen bei der Entwicklung kollaborativer Live-Tools auf die wichtige Geschäftslogik dieser Echtzeitfunktionen konzentrieren können.
Streaming-Anwendungen
Echtzeit-Streaming-Anwendungen wie Netflix sind komplex und bestehen aus vielen Schichten von Datenströmen. Um eine solche Anwendung zu entwickeln, brauchst du ein solides Framework, das asynchrone Datenströme effizient verarbeiten kann.
Es ist ein ideales Framework für die Entwicklung und den Einsatz von unternehmenstauglichen und skalierbaren Streaming-Anwendungen.
Fintech-Anwendungen
Fintech ist ein Computerprogramm oder eine andere Technologie, die Bank- und Finanzdienstleistungen unterstützt oder ermöglicht. Die Entwicklung von Fintech-Anwendungen liegt derzeit im Trend der Branche, und Express.js ist das Framework der Wahl für die Entwicklung hoch skalierbarer Fintech-Anwendungen.
Wenn du vorhast, eine Fintech-Anwendung mit vielen Nutzern und einem hohen Transaktionsvolumen zu entwickeln, dann schließt du dich Unternehmen wie Paypal und Capital One an und entwickelst und implementierst deine Anwendung mit Express.js.
Warum du Express.js nutzen solltest
Es gibt mehrere Gründe, warum du Express.js für dein nächstes Projekt einsetzen solltest: von schnelleren I/Os für schnellere Anfragen und Antworten bis hin zu seinem Single-Thread-System und asynchronen Prozessen. Außerdem nutzt es die MVC-Struktur, um Datenmanipulationen und Routing-Systeme zu vereinfachen.
Werfen wir einen genaueren Blick auf einige der wichtigsten Gründe, warum du Express.js einsetzen solltest.
Flexibel und schnell
Express.js ist sehr benutzerfreundlich und flexibel und schneller als jedes andere Node.js-Framework. Es ist ein minimalistisches Framework, das eine schnelle Anwendungsentwicklung ermöglicht und dir den Stress erspart, die vielen verschiedenen Teile eines größeren Frameworks zu beherrschen. Außerdem bietet es umfangreiche Funktionen wie ein ausgezeichnetes Routing-System, Middlewares und Content-Negotiation direkt nach dem Auspacken.
Teil des MEAN Stack
Express.js ist das Framework der Wahl in jedem Stack, der mit dem E in einem Stack wie MERN, MEAN usw. dargestellt wird. Es lässt sich auch leicht in jeden Stack oder jede Technologie integrieren, um zu zeigen, wie wichtig das Framework für den MEAN-Stack-Entwicklungsprozess ist.
Darüber hinaus kann es effizient mit einem robusteren Datenbankmanagementsystem als dem herkömmlichen MySQL verbunden werden und ermöglicht einen nahtlosen Entwicklungsprozess über alle Stacks hinweg. Diese Kombination von Funktionen macht Express.js bei MEAN-Entwicklern sehr beliebt.
Skalierbarkeit
Express.js hat sich im Laufe der Jahre als sehr skalierbar erwiesen, da viele große Unternehmen das Framework täglich auf ihren Servern einsetzen.
Es verarbeitet Benutzeranfragen und -antworten effizient und erfordert wenig bis gar keine zusätzliche Konfiguration bei der Entwicklung einer umfangreichen Webanwendung.
Es verfügt über hervorragende Module, Pakete und zusätzliche Ressourcen, die Entwicklern helfen, zuverlässige und skalierbare Webanwendungen zu erstellen.
Unterstützt von Google V8 Engine
Express.js unterstützt viele Pakete der Google V8 Engine, was das Framework sehr leistungsfähig für die Entwicklung und den Einsatz von Echtzeit-, kollaborativen und netzwerkbasierten Anwendungen auf Unternehmensebene macht.
Die Google V8-Engine ist eine Open-Source-Hochleistungs-JavaScript- und WebAssembly-Engine, die hohe Geschwindigkeit und Skalierbarkeit für komplexe und intensive Anwendungen unterstützt. Wenn du Pakete verwendest, die die Google V8-Engine nutzen, steigert das die Leistung und Skalierbarkeit deiner Backend-Anwendung enorm.
Community-Unterstützung
Da das Framework das beliebteste Node.js-Backend-Framework ist, verfügt es über die größte Anzahl an Community-Support, Ressourcen und Paketen für alle Entwicklungsherausforderungen. Auch der Support von Google ist umfangreich, was das Framework zu einer beliebten Wahl unter Node.js-Entwicklern macht. Der Open-Source-Charakter gibt Entwicklern die Möglichkeit, erweiterbare Pakete und Ressourcen zu erstellen, um die Entwicklung zu erleichtern – nicht nur für sie selbst, sondern auch für alle anderen, die mit Express.js programmieren.
Leistungsstarkes Routing-System
Das Framework verfügt über das leistungsstärkste und robusteste Routing-System, das deine Anwendung bei der Beantwortung von Kundenanfragen über einen bestimmten Endpunkt unterstützt.
Mit dem Routing-System in Express.js kannst du dein umfangreiches Routing-System in überschaubare Dateien aufteilen, indem du die Router-Instanz des Frameworks nutzt.
Das Express-Routing-System ist hilfreich bei der Verwaltung deiner Anwendungsstruktur, indem es verschiedene Routen in einem einzigen Ordner/Verzeichnis zusammenfasst.
Entwickler/innen erstellen besser wartbaren Code, indem sie Funktionen mit dem Express-Router gruppieren und Wiederholungen vermeiden.
Middleware
Express.js ist ein Framework, das eine Reihe von Middleware umfasst, um einen nahtlosen Entwicklungsprozess zu ermöglichen.
Middlewares sind Codes, die ausgeführt werden, bevor eine HTTP-Anfrage den Route-Handler erreicht oder bevor ein Client eine Antwort erhält. So kann das Framework ein typisches Skript vor oder nach der Anfrage eines Clients ausführen.
Mit Middleware können Entwickler/innen Skripte einfügen, um den Fluss der Anwendung abzufangen. So können sie zum Beispiel mit Middleware prüfen, ob ein/e Nutzer/in erfolgreich an- oder abgemeldet ist.
Wie Express.js funktioniert
Da Express.js das Client-Server-Modell nutzt, um Nutzeranfragen anzunehmen und Antworten an den Client zurückzuschicken, unterscheidet sich die Funktionsweise nicht allzu sehr von der anderer beliebter Frameworks wie Laravel.
Wenn ein Nutzer eine Anfrage von seinem Webbrowser aus sendet, indem er eine Webseiten-Adresse eingibt, sendet der Browser eine HTTP-Anfrage an die Anwendung/den Server (viele mit Express.js erstellte Anwendungen werden irgendwo in der Cloud gehostet).
Der Server empfängt die Anfrage über eine seiner Routen und verarbeitet sie mit dem Controller, der der angeforderten Route entspricht.
Nach der Verarbeitung sendet der Server eine Antwort über HTTP an den Client zurück, da es sich um ein Hin- und Her-Kommunikationsprotokoll handelt.
Die Antwort, die der Kunde erhält, kann ein Standardtext, eine dynamische HTML-Seite, die der Browser verarbeitet und eine schöne Webseite anzeigt, oder JSON-Daten sein, die die Frontend-Entwickler verarbeiten, um die Informationen auf der Webseite anzuzeigen.
Lass uns einen einfachen Server erstellen, der mit Express.js auf eingehende Anfragen von einer bestimmten URL und Portnummer wartet:
const express = require('express')
const app = express()
const port = 4000
app.get('/', (request, response) => {
response.send('Testing Hello World!')
})
app.listen(port, () => {
console.log(`Test app listening at http://localhost:${port}`)
})
Das ist ein einfacher Express.js-Server, der auf eingehende Anfragen auf http://localhost:4000/ wartet und eine Textantwort von „Testing Hello World!„.
Wie man eine Express.js App erstellt
Jetzt wollen wir eine reale Demoanwendung mit dem neuen Express.js 5.0 erstellen. Um loszulegen, erstelle ein Verzeichnis für deine neue Anwendung und installiere die folgenden Pakete:
mkdir first-express-app
cd first-express-app
npm install [email protected] --save
Als Nächstes erstellst du eine index.js-Datei im Stammverzeichnis und fügst dort Folgendes ein:
touch index.js
Nachdem wir den Server wie oben beschrieben eingerichtet haben, erstellen wir ein Todos-Array, das alle unsere Todos enthält, die je nach aufgerufenem Endpunkt an den Nutzer zurückgegeben werden. Füge den folgenden Code in die Datei index.js
ein:
const express = require("express");
const app = express();
const port = 3000;
app.listen(port, () => {
console.log(`Test app listening at http://localhost:${port}`)
})
const todos = [
{
title: "Todo 1",
desc: "This is my first Todo",
completed: true,
},
{
title: "Todo 2",
desc: "This is my second Todo",
completed: true,
},
{
title: "Todo 3",
desc: "This is my third Todo",
completed: true,
},
{
title: "Todo 4",
desc: "This is my fourth Todo",
completed: true,
},
{
title: "Todo 5",
desc: "This is my fifth Todo",
completed: true,
},
];
// Data source ends here
Als Nächstes erstellen wir einen Endpunkt zum Abrufen aller Todos
, die auf unserem Server gespeichert sind:
app.get("/todos", (request, response) => {
response.status(200).json(todos);
});
Als Nächstes einen Endpunkt, um ein einzelnes Todo anhand der ID des Todos abzurufen:
app.get("/todos/:id", (request, response) => {
response
.status(200)
.json({ data: todos.find((todo) => todo.id === request.params.id) });
});
Jetzt ein Endpunkt, um ein neues todo
zu speichern:
app.post("/todos", (request, response) => {
todos.push(request.body);
response.status(201).json({ msg: "Todo created successfully" });
});
Als Nächstes einen Endpunkt, um ein bestehendes todo
mit der ID
zu aktualisieren:
app.put("/todos/:id", (request, response) => {
const todo = todos.find((todo) => todo.id === request.params.id);
if (todo) {
const { title, desc, completed } = request.body;
todo.title = title;
todo.desc = desc;
todo.completed = completed;
response.status(200).json({ msg: "Todo updated successfully" });
return;
}
response.status(404).json({ msg: "Todo not found" });
});
Schließlich erstellen wir einen Endpunkt zum Löschen eines einzelnen todo
basierend auf dem ID
:
app.delete("/todos/:id", (request, response) => {
const todoIndex = todos.findIndex((todo) => (todo.id = request.params.id));
if (todoIndex) {
todos.splice(todoIndex, 1);
response.status(200).json({ msg: "Todo deleted successfully" });
}
response.status(404).json({ msg: "Todo not found" });
});
Dieser Codeschnipsel zeigt, wie man eine DELETE-Funktion in Express.js implementiert. Er sammelt die Todo ID über Parameter und sucht im Array nach der passenden ID und löscht sie.
Testen der Express.js App
Jetzt ist es an der Zeit, unsere neue Express.js-Anwendung zu testen!
Führe den folgenden Befehl aus, um unsere neu entwickelte REST-API mit Postman zu testen und sicherzustellen, dass wir die richtigen Daten haben:
node index.js
Du kannst Postman von der offiziellen Webseite herunterladen und den Test unten ausführen. Das war’s. Um mehr zu lernen, empfehlen wir dir, weitere Funktionen mit dem in diesem Artikel beschriebenen Ansatz zu erstellen und dein Wissen über Express.js zu erweitern.
Zusammenfassung
Express.js ist das beliebteste Framework im Node.js Ökosystem, und es ist nicht schwer zu erkennen, warum. Es bietet eine ganze Reihe von Vorteilen und Funktionen, von denen du profitieren kannst.
Die flache Lernkurve von Express.js macht den Einstieg sehr einfach und leicht. Express.js abstrahiert unnötige oder unerwünschte Funktionen von Webanwendungen und bietet dir eine dünne Schicht von Kernfunktionen, die dir Flexibilität ermöglichen.
Und da das Express.js-Framework die Grundlage von Node.js ist, hast du mit Express.js automatisch auch ein gutes Verständnis für andere beliebte Frameworks. Dieses Wissen kann dir helfen, wichtige Entscheidungen zu treffen, wenn es um den Aufbau von Geschäftslogik geht, welches Framework du neben Express.js verwenden solltest und wann du Standard- oder Benutzerpakete verwenden solltest.
Was planst du als Nächstes mit Express.js zu bauen? Lass es uns in den Kommentaren wissen.