FallstudienBlogÜber uns
Anfragen

Erste Schritte mit NestJS: Ein modernes Framework für Node.js

Viktor Kharchenko

14. Nov. 20235 Min. Lesezeit

Software development

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-name

Ersetze 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 start

Standardmäß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.


 

Veröffentlicht am 14. November 2023

Teilen


Viktor Kharchenko

Node.js Developer

Digital Transformation Strategy for Siemens Finance

Cloud-based platform for Siemens Financial Services in Poland

See full Case Study
Ad image
Erste Schritte mit NestJS: Ein modernes Framework für Node.js
Verpassen Sie nichts – abonnieren Sie unseren Newsletter
Ich stimme dem Empfang von Marketing-Kommunikation von Startup House zu. Klicken Sie für die Details

Das könnte Ihnen auch gefallen...

Die 15 besten React-Native-Agenturen: Ihr Leitfaden für 2023
React NativeSoftware houseSoftware development

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 20235 Min. Lesezeit

Professionelles Outsourcing der Softwareentwicklung
Software developmentSoftware house

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 20236 Min. Lesezeit

Illustration of mobile app development trends for 2025 with AI, AR, and 5G icons
Software developmentDigital products

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 20234 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 buchen

Arbeiten Sie mit einem Team, dem erstklassige Unternehmen vertrauen.

Rainbow logo
Siemens logo
Toyota logo

Wir entwickeln, was als Nächstes kommt.

Unternehmen

Branchen

Startup Development House sp. z o.o.

Aleje Jerozolimskie 81

Warsaw, 02-001

VAT-ID: PL5213739631

KRS: 0000624654

REGON: 364787848

Kontakt

hello@startup-house.com

Unser Büro: +48 789 011 336

Neues Geschäft: +48 798 874 852

Folgen Sie uns

Award
logologologologo

Copyright © 2026 Startup Development House sp. z o.o.

EU-ProjekteDatenschutzerklärung