Erste Schritte mit NestJS: Ein modernes Framework für Node.js
Viktor Kharchenko
14. Nov. 2023・5 Min. Lesezeit
Inhaltsverzeichnis
Was ist NestJS?
Module und Provider
Module:
Provider:
Die MVC-Architektur
Model:
View:
Controller:
TypeScript-Unterstützung
Dependency Injection
Dekoratoren
@Controller:
@Get, @Post, @Put, @Delete:
@Param, @Query, @Body:
@Injectable:
Erste Schritte mit deinem ersten NestJS-Projekt
Fazit
FAQs
Node.js hat in den letzten Jahren aufgrund seiner Performance und Skalierbarkeit enorme Popularität beim Entwickeln serverseitiger Anwendungen gewonnen. Wenn du mit Node.js durchstarten und dabei auf ein robustes, gut organisiertes Framework setzen möchtest, ist NestJS eine ausgezeichnete Wahl. In diesem Artikel stellen wir dir NestJS vor und führen dich durch die Grundlagen.
Was ist NestJS?
NestJS ist ein progressives Node.js-Framework für effiziente, skalierbare und gut wartbare serverseitige Anwendungen. Es verbindet die Leistungsfähigkeit von Node.js mit TypeScript und ist damit besonders attraktiv für Entwickler, die statisch typisierte Sprachen bevorzugen. Schauen wir uns die wichtigsten Aspekte von NestJS an:
Module und Provider
NestJS-Anwendungen folgen einem modularen Ansatz. Module und Provider sind grundlegende Bausteine von NestJS-Anwendungen.
Module:
Ein Modul hilft dir, deine Anwendung in klar abgegrenzte, wiederverwendbare Teile zu gliedern. Jedes Modul kapselt thematisch zusammengehörige Komponenten wie Controller, Services und weitere zugehörige Dateien. So bleibt der Code sauber und gut organisiert.
Provider:
Provider sind Klassen, die in andere Komponenten wie Controller oder Services injiziert werden können. Sie definieren maßgeblich die Geschäftslogik deiner Anwendung. Provider werden mit dem Decorator @Injectable() versehen und können so in abhängigen Komponenten verwendet werden.
Die MVC-Architektur
NestJS folgt dem Model-View-Controller-(MVC)-Architekturmuster und bietet damit einen strukturierten, gut organisierten Ansatz für den Aufbau von Anwendungen. Diese Trennung der Verantwortlichkeiten macht den Code wartbar und fördert die Skalierbarkeit.
Model:
In NestJS repräsentiert das Model die Daten und Geschäftslogik deiner Anwendung. Es definiert die Struktur deiner Daten und deren Interaktion mit der Datenbank. Hier ein Beispiel für ein einfaches User-Model mit TypeScript:
// user.model.ts
export class User {
id: number;
username: string;
email: string;
// ... other properties and methods
}View:
Obwohl NestJS primär auf das Backend fokussiert, kannst du APIs erstellen, die als „View“ für deine Frontend-Anwendungen dienen. Die in Controllern definierten API-Endpunkte bilden die Schnittstelle zwischen Frontend und Server.
Controller:
Controller verarbeiten eingehende Requests, rufen dafür Services auf und senden Antworten zurück. Sie sind für die Definition der Routen und die Request-Verarbeitungslogik zuständig. Decorators spielen eine zentrale Rolle, um Routen festzulegen und Controller mit Endpunkten zu verknüpfen. Hier ein einfaches Controller-Beispiel in NestJS:
// app.controller.ts
import { Controller, Get } from '@nestjs/common';
@Controller('app')
export class AppController {
@Get()
getHello(): string {
return 'Hello, NestJS!';
}
}TypeScript-Unterstützung
TypeScript ist eine statisch typisierte Obermenge von JavaScript und wird von NestJS vollständig unterstützt. So schreibst du sauberen, typsicheren Code, der Fehler bereits beim Kompilieren erkennt und damit deinen Entwicklungs-Workflow verbessert.
TypeScript bietet Features wie Interfaces und Typprüfung, was beim Definieren von Datenstrukturen und Schnittstellen zwischen verschiedenen Teilen deiner Anwendung hilfreich ist. So arbeitest du im gesamten Projekt mit konsistenten, klar definierten Daten.
Dependency Injection
Dependency Injection ist ein Designmuster, das in NestJS zur Verwaltung von Abhängigkeiten und zur Verbesserung der Testbarkeit eingesetzt wird. Im Kern bedeutet Dependency Injection, dass eine Komponente (z. B. ein Controller oder ein Service) die benötigten Abhängigkeiten (Services oder Objekte) bereitgestellt bekommt, anstatt sie selbst zu erzeugen. Das fördert Wiederverwendbarkeit und die Trennung von Verantwortlichkeiten.
In NestJS kannst du Services erstellen, die bestimmte Funktionalitäten deiner Anwendung kapseln. Diese Services lassen sich dann in Controller oder andere Services injizieren, was die Modularität fördert. Hier ein Beispiel für einen Service und dessen Injection in einen Controller:
// cats.service.ts
import { Injectable } from '@nestjs/common';
@Injectable()
export class CatsService {
private readonly cats: string[] = [];
create(cat: string): void {
this.cats.push(cat);
}
findAll(): string[] {
return this.cats;
}
}
// cats.controller.ts
import { Controller, Post, Get, Body } from '@nestjs/common';
import { CatsService } from './cats.service';
@Controller('cats')
export class CatsController {
constructor(private readonly catsService: CatsService) {}
@Post()
async create(@Body() cat: string) {
this.catsService.create(cat);
}
@Get()
async findAll(): Promise<string[]> {
return this.catsService.findAll();
}
}
In diesem Beispiel kapselt der CatsService die Logik zur Verwaltung einer Liste von Katzen. Dieser Service wird in den CatsController injiziert, sodass der Controller die bereitgestellte Funktionalität nutzen kann.
Dekoratoren
Dekoratoren sind ein leistungsstarkes Feature in NestJS. Sie ermöglichen es, Metadaten zu definieren und verschiedene Aspekte wie Routing, Validierung und weitere Funktionalitäten elegant abzubilden. Das vereinfacht die Struktur und erhöht die Lesbarkeit des Codes.
@Controller:
Mit dem @Controller-Decorator definierst du eine Controller-Klasse. Er legt die Basisroute für alle in diesem Controller definierten Routen fest.
@Get, @Post, @Put, @Delete:
Diese Dekoratoren verwendest du innerhalb von Controllern, um HTTP-Methoden und zugehörige Routen zu definieren. @Get() steht beispielsweise für eine GET-Route, @Post() für eine POST-Route.
@Param, @Query, @Body:
Diese Dekoratoren greifen in Controller-Methoden auf Request-Parameter, Query-Parameter und Request-Bodies zu. So wird das Auslesen und Verarbeiten von Daten deutlich einfacher.
@Injectable:
Der @Injectable()-Decorator markiert eine Klasse als Provider bzw. Service, der in andere Komponenten wie Controller oder Services injiziert werden kann.
Erste Schritte mit deinem ersten NestJS-Projekt
Los geht’s Schritt für Schritt mit deinem NestJS-Projekt:
1. Installation: Installiere NestJS global mit npm oder yarn:
npm install -g @nestjs/cli
# OR
yarn global add @nestjs/cli
2. Neues Projekt erstellen: Erzeuge ein neues NestJS-Projekt mit der Nest CLI:
nest new project-name
Dieser Befehl erstellt die Projektstruktur und installiert die benötigten Abhängigkeiten.
Struktur erkunden: Navigiere nach der Erstellung in den Projektordner. Du findest eine übersichtliche Struktur mit Ordnern für Controller, Module, Services und mehr.
3. Erstes Modul erstellen: Erzeuge ein Modul, einen Controller und einen Service. Das sind zentrale Bausteine in NestJS:
nest generate module module-name // nest g m module-name
nest generate controller controller-name // nest g c controller-name
nest generate service service-name // nest g s controller-name
Oder nutze die Kurzbefehle:
nest g m module-name
nest g c controller-name
nest g s controller-nameErsetze module-name, controller-name und service-name durch aussagekräftige Namen für dein Projekt.
4. Routen definieren: Verwende in deinem Controller Dekoratoren wie @Get(), @Post() und andere, um Routen zu definieren. Die Geschäftslogik implementierst du im zugehörigen Service.
5. Anwendung starten: Starte deine NestJS-Anwendung mit folgendem Befehl:
npm run start
# OR
yarn startStandardmäßig lauscht deine NestJS-Anwendung auf Port 3000.
6. API testen: Öffne deinen Browser oder nutze Tools wie Postman, um deine API-Endpunkte zu testen. Wenn du zum Beispiel eine GET-Route im Controller definiert hast, kannst du sie unter http://localhost:3000/controller-route aufrufen.
Fazit
NestJS ist ein leistungsstarkes Framework, das die Entwicklung mit Node.js vereinfacht und einen strukturierten, effizienten Weg zum Erstellen serverseitiger Anwendungen bietet. Ob Einsteiger oder erfahrener Entwickler – NestJS lohnt sich in jedem Fall. Mit den hier genannten Ressourcen bist du bestens gerüstet für deinen Einstieg. Viel Spaß beim Coden!
FAQs
Was ist NestJS?
NestJS ist ein progressives Node.js-Framework zum Erstellen effizienter, skalierbarer serverseitiger Anwendungen.
Was ist die MVC-Architektur in NestJS?
MVC trennt eine App in Model, View und Controller und fördert dadurch Organisation und Wartbarkeit des Codes.
Wie profitiert NestJS von TypeScript?
TypeScript sorgt für Typsicherheit, verbessert die Codequalität und erkennt Fehler bereits beim Kompilieren.
Was ist Dependency Injection in NestJS?
Dependency Injection verwaltet Abhängigkeiten von Komponenten und fördert Wiederverwendbarkeit sowie klare Verantwortlichkeiten.
Was sind Module und Provider in NestJS?
Module strukturieren die App in Teilbereiche, während Provider injizierbare Klassen zur Definition der Geschäftslogik sind.
Wie erstelle ich ein neues NestJS-Projekt?
Mit nest new project-name erzeugst du per Nest CLI eine neue Projektstruktur.
Was sind Dekoratoren in NestJS?
Dekoratoren definieren Metadaten und vereinfachen die Struktur, z. B. Routing mit @Get() und @Controller.
Wie starte ich meine NestJS-Anwendung?
Führe npm run start oder yarn start aus. Standardmäßig läuft die App auf Port 3000.
Wie teste ich API-Endpunkte in NestJS?
Mit Tools wie Postman oder im Browser, indem du die URL der Endpunkte aufrufst.
Kann ich in NestJS eigene Dekoratoren erstellen?
Ja, du kannst eigene Dekoratoren definieren, um zusätzliche Funktionalität oder Metadaten hinzuzufügen.
Welche Rolle spielt der @Injectable()-Decorator?
@Injectable() markiert eine Klasse als Provider, damit sie in andere Komponenten injiziert werden kann.
Wie definiere ich Routen in NestJS-Controllern?
Verwende in Controller-Klassen Dekoratoren wie @Get(), @Post() usw., um Routen festzulegen.
Ist NestJS für Einsteiger und erfahrene Entwickler geeignet?
Ja, NestJS bietet für jedes Level einen strukturierten und effizienten Entwicklungsprozess.
Kann ich mit NestJS RESTful APIs bauen?
Ja, dank Routing und Dekoratoren eignet sich NestJS hervorragend für RESTful APIs.
Welche Datenbanken sind mit NestJS kompatibel?
NestJS unterstützt viele Datenbanken, darunter MySQL, PostgreSQL, MongoDB und mehr, z. B. über Libraries wie TypeORM.
Eignet sich NestJS für Echtzeitanwendungen?
Ja, mit WebSocket-Libraries wie Socket.io kannst du NestJS für Echtzeitanwendungen nutzen.
Unterstützt NestJS eine Microservices-Architektur?
Ja, NestJS unterstützt Microservices und eignet sich zum Aufbau verteilter Systeme.
Kann ich NestJS mit einem Frontend-Framework wie Angular verwenden?
Ja, NestJS lässt sich hervorragend als Backend für Angular-Anwendungen einsetzen.
Gibt es offizielle NestJS-Plugins oder -Erweiterungen?
Ja, es gibt eine aktive Community sowie offizielle und Community-beitragsbasierte Plugins und Erweiterungen.
Wo finde ich NestJS-Dokumentation und Tutorials?
Ausführliche Dokumentation und Tutorials findest du auf der offiziellen NestJS-Website und in den Community-Foren.
Digital Transformation Strategy for Siemens Finance
Cloud-based platform for Siemens Financial Services in Poland


Das könnte Ihnen auch gefallen...

Die 15 besten React-Native-Agenturen: Ihr Leitfaden für 2023
Die Suche nach dem richtigen React Native-Entwicklungsunternehmen für dein Projekt kann überwältigend sein. In diesem Blogbeitrag präsentieren wir die Top 15 Unternehmen, die für ihre Expertise in der React Native App-Entwicklung bekannt sind. Entdecke ihre Stärken und finde deinen idealen Softwarepartner. Damit es für dich schneller geht, haben wir hier die Top 15 React Native-Entwicklungsunternehmen zusammengestellt.
Olaf Kühn
31. Mai 2023・5 Min. Lesezeit

Professionelles Outsourcing der Softwareentwicklung
Nicht alle Unternehmen verfügen über eigene IT-Teams – genau hier setzt das Outsourcing der Softwareentwicklung (IT‑Outsourcing) an. Durch die Zusammenarbeit mit einem spezialisierten Outsourcing-Anbieter können Unternehmen die Expertise qualifizierter Fachkräfte nutzen und sich auf ihr Kerngeschäft konzentrieren. Dieser Artikel beleuchtet die angebotenen Services, die Vorteile und die Risiken des Auslagerns der Softwareentwicklung und zeigt, warum dieses Modell für viele Unternehmen zu einem wachsenden Trend geworden ist.
David Adamick
02. Juni 2023・6 Min. Lesezeit

UI-Entwicklung mit Storybook für JavaScript meistern
Storybook ist ein unverzichtbares Tool für Frontend-Entwickler, die UI-Komponenten erstellen und interaktive Benutzeroberflächen in JavaScript entwickeln müssen.
Marek Majdak
09. März 2023・4 Min. Lesezeit
Bereit, Ihr Know-how mit KI zu zentralisieren?
Beginnen Sie ein neues Kapitel im Wissensmanagement – wo der KI-Assistent zum zentralen Pfeiler Ihrer digitalen Support-Erfahrung wird.
Kostenlose Beratung buchenArbeiten Sie mit einem Team, dem erstklassige Unternehmen vertrauen.
Wir entwickeln, was als Nächstes kommt.
Dienste




