Definicja #
NestJS to progresywny framework backendowy dla Node.js napisany w TypeScript, zainspirowany architekturą Angular (moduły, dekoratory, DI). Buduje na solidnych fundamentach — domyślnie używa Express pod spodem (z opcją Fastify), ale dodaje warstwę abstrakcji ułatwiającą organizację kodu.
Kluczowe koncepcje NestJS:
- Moduły — podstawowa jednostka organizacji:
@Module()grupuje kontrolery, serwisy i dostawców - Kontrolery — obsługa requestów HTTP:
@Controller(),@Get(),@Post(),@Param(),@Body() - Serwisy/Providers — logika biznesowa wstrzykiwana przez DI:
@Injectable() - Dependency Injection — wbudowany kontener DI zarządzający cyklem życia obiektów
- Guards — autoryzacja i autentykacja requestów (
@UseGuards()) - Interceptors i Pipes — transformacja danych, walidacja (class-validator), logowanie
- Middleware — funkcje wykonywane przed routerem
- WebSockets i Mikroservisy — wbudowane wsparcie dla real-time i architektury mikroserwisów (Redis, RabbitMQ, Kafka)
NestJS jest często mylony z Next.js — oba to frameworki Node.js, ale NestJS jest backendowy (REST/GraphQL API, mikroserwisy), Next.js frontendowy (React SSR/SSG). NestJS jest dojrzałą, produkcyjną platformą z aktywną społecznością i komercyjnym wsparciem (NestJS Enterprise).
Zastosowania #
- Budowanie REST API z pełną strukturą (kontrolery, serwisy, DTO, walidacja) w TypeScript dla aplikacji enterprise
- GraphQL API przez wbudowaną integrację z @nestjs/graphql i Apollo Server z code-first lub schema-first podejściem
- Mikroserwisy komunikujące się przez message brokers (Redis, RabbitMQ, Kafka) z wbudowanym wsparciem NestJS
- Real-time aplikacje z WebSockets przez @nestjs/websockets z gateway pattern
- Pełnoekranowe aplikacje z monorepo łączącym NestJS backend i Angular frontend w jednym workspace Nx
Ścieżka nauki #
NestJS jest najłatwiejszy do nauki dla osób znających Angular — architektura jest bardzo podobna. Oficjalna dokumentacja docs.nestjs.com jest wyjątkowo dobra — zawiera obszerne przewodniki dla każdego konceptu. Zacznij od "First steps" i zbuduj proste CRUD API.
Kluczowe kroki: zainstaluj CLI (npm i -g @nestjs/cli), utwórz projekt, poznaj strukturę modułów i DI, dodaj bazę danych przez TypeORM lub Prisma (@nestjs/typeorm). Naucz się walidacji przez class-validator i class-transformer, autentykacji przez @nestjs/jwt i Passport.js.
Na poziomie zaawansowanym: konfiguracja (ConfigModule, @nestjs/config), Guards i własna logika autoryzacji, interceptory, testing (supertest dla E2E, @nestjs/testing dla unit), mikroserwisy przez @nestjs/microservices. Kursy: "NestJS: The Complete Developer's Guide" (Udemy, Stephen Grider) i oficjalny kurs NestJS (courses.nestjs.com). Znajomość TypeScript i Express jest prerekvizitem.