NestJS to nowoczesna platforma oparta na Node.js, stworzona z myślą o budowie rozbudowanych, wydajnych i stabilnych aplikacji działających po stronie serwera.
Jej celem jest uporządkowanie projektów i eliminacja problemów wynikających z niejasnej struktury kodu. Modułowa budowa NestJS pozwala na łatwą organizację kodu w odrębne segmenty, zwane modułami.
Platforma ta wykorzystuje TypeScript i bazuje na ExpressJS. NestJS zdobył popularność wśród programistów ceniących zalety statycznego typowania oferowanego przez TypeScript. Łączy w sobie elementy programowania reaktywnego (FRP), obiektowego (OOP) i funkcyjnego (FP).
Dlaczego warto wybrać NestJS?
NestJS jest przyjazny dla początkujących, oferując przejrzystą strukturę i intuicyjne narzędzia wiersza poleceń (CLI). Umożliwia to szybkie tworzenie szkieletu nowych funkcji za pomocą pojedynczego polecenia.
Framework dostarcza gotowe moduły, serwisy, kontrolery i zestawy testów, które ułatwiają rozpoczęcie pracy. Dostępne są również liczne wzorce i szablony, które usprawniają proces tworzenia aplikacji.
Opanowanie NestJS nie powinno być trudne dla osób, które znają podstawowe konstrukcje JavaScript, takie jak pętle, składnia i instrukcje warunkowe oraz mają doświadczenie z Angular.
Kluczowe cechy NestJS
Oparty na TypeScript
NestJS opiera się na TypeScript, który rozszerza możliwości JavaScript. TypeScript zapewnia lepsze środowisko programistyczne poprzez eliminację konieczności ręcznego sprawdzania błędów za każdym razem, gdy wprowadzamy zmiany w kodzie. TypeScript oferuje wszystkie funkcje JavaScript, dodając do tego szereg dodatkowych udogodnień.
Kontener wstrzykiwania zależności
Mechanizm wstrzykiwania zależności (DI) oddziela proces inicjalizacji obiektów używanych przez klasę od samej klasy. W takim układzie klasa staje się „klientem”, a zależne od niej elementy to „usługi”. Wbudowany kontener DI w NestJS zwiększa wydajność i modułowość aplikacji.
Zaawansowany interfejs wiersza poleceń (CLI)
Za pomocą NestCLI można inicjować, rozwijać i utrzymywać wszystkie aplikacje NestJS. CLI oferuje szereg funkcji, między innymi:
- Tworzenie szkieletu projektu
- Uruchamianie projektu w trybie deweloperskim
- Kompilowanie i pakowanie aplikacji do wdrożenia produkcyjnego
Modularyzacja
Każda aplikacja NestJS składa się z co najmniej jednego modułu, a moduł główny stanowi jej podstawę. W typowej aplikacji NestJS, każda logiczna część kodu jest zorganizowana w oddzielnym module, który odpowiada za konkretną funkcjonalność. Takie podejście ułatwia zarządzanie komponentami i umożliwia tworzenie aplikacji złożonych z wielu modułów o ściśle powiązanych zadaniach.
Testowanie jednostkowe
Automatyczne testy niosą ze sobą wiele korzyści, jednak konfiguracja takiego środowiska może być czasochłonna. NestJS udostępnia różne narzędzia ułatwiające zespołom tworzenie i automatyzację testów. Zaletą NestJS jest możliwość integracji z różnymi bibliotekami testowymi. System wstrzykiwania zależności NestJS jest dostępny podczas testowania, co ułatwia weryfikację komponentów.
Agonostyk bazy danych
NestJS umożliwia łatwą integrację z dowolną bazą danych SQL lub NoSQL, w zależności od potrzeb i preferencji. Podłączenie NestJS do bazy danych jest proste, wystarczy zainstalować odpowiedni sterownik Node.js.
Obsługa różnych bibliotek
NestJS jest kompatybilny z wieloma narzędziami, co przyspiesza proces tworzenia aplikacji. Platforma oferuje obsługę logowania, walidacji danych, buforowania, WebSockets, TypeORM, Mongoose i GraphQL bez konieczności dodatkowej konfiguracji.
Architektura i sposób działania NestJS
NestJS posiada trójwarstwową architekturę, składającą się z kontrolerów, dostawców i modułów. Takie podejście umożliwia programistom tworzenie przejrzystego i niepowtarzalnego kodu.
Źródło obrazu: lepsze programowanie
Kontrolery
Kontrolery w NestJS pośredniczą między żądaniami klienta a odpowiedziami serwera. Mechanizm routingu przekierowuje przychodzące żądanie HTTP do właściwego kontrolera. Framework wykorzystuje dekoratory i klasy do definiowania kontrolerów. Każda metoda klasy jest powiązana z trasą, która obsługuje określone żądanie.
Dostawcy
Dostawcy są fundamentem NestJS. Są one wstrzykiwane jako zależności, tworząc powiązania między różnymi obiektami. Klasy w NestJS, takie jak helpery, serwisy czy repozytoria, mogą pełnić rolę dostawców po dodaniu dekoratora `@Injectable()`. Tacy dostawcy mogą być wstrzykiwani do klasy za pomocą konstruktora, a NestJS automatycznie rozwiąże zależności.
Moduły
Moduł w NestJS łączy ściśle powiązane ze sobą elementy. Każda aplikacja NestJS posiada moduł główny, który jest punktem wejścia. Stosowanie wielu modułów jest zalecane, jeśli chcemy uzyskać uporządkowany i czytelny kod. Dekorator `@Module()` definiuje moduł i dostarcza informacji takich jak zależności, kontrolery i dostawcy powiązane z tym modułem.
Pierwsze kroki z NestJS
Upewnij się, że masz zainstalowane Node.js i npm. Potrzebujesz środowiska uruchomieniowego, a Node.js jest idealny do tego celu. Wymagana jest wersja >= 12, z wyjątkiem v13. Możesz sprawdzić, czy masz zainstalowane Node.js i npm za pomocą tych poleceń:
node -v
npm -v
Jeśli oba są zainstalowane, wyświetli się wynik podobny do tego:
Jeśli ich nie masz, zainstaluj je z oficjalnej strony. Na szczęście Node.js i npm są instalowane razem.
- Zainstaluj Nest CLI. Użyj poniższych poleceń, aby skonfigurować CLI i projekt:
npm i -g @nestjs/cli
nest new project-name
Dla celów demonstracyjnych nazwiemy projekt `mynestapp`. NestJS umożliwia pracę z TypeScript lub Vanilla JavaScript. Wybierz preferowaną opcję i naciśnij Enter. Po utworzeniu szkieletu aplikacji, struktura plików zostanie skonfigurowana, a folder „src” będzie zawierał podstawowe pliki, jak pokazano na poniższym zrzucie ekranu:
- Uruchom aplikację / Twój pierwszy „Hello World”
Po zakończeniu instalacji, uruchom poniższe polecenia, aby włączyć serwer developerski:
cd mynestapp
npm run start
Wpisz `http://localhost:3000/` w przeglądarce, a Twój pierwszy komunikat „Hello World” w NestJS powinien zostać wyświetlony.
Zalety NestJS
- Łatwość nauki. NestJS jest stosunkowo łatwy do opanowania, szczególnie dla osób mających doświadczenie z Angular lub ogólną znajomość JavaScript. Szczegółowa dokumentacja dodatkowo ułatwia naukę.
- Elastyczność. NestJS pozwala tworzyć różnorodne aplikacje. Za pomocą tej platformy można budować aplikacje MVC, aplikacje GraphQL, interfejsy API RESTful i gniazda internetowe.
- Bogaty wybór modułów. Dostępne moduły tworzone przez społeczność ułatwiają programistom włączanie różnorodnych funkcjonalności w tworzone aplikacje serwerowe.
- Szybki rozwój i przejrzysta architektura. NestJS pozwala uniknąć tworzenia wszystkiego od podstaw, zapewniając jednocześnie solidną strukturę, która ułatwia zrozumienie kodu.
Wady NestJS
- Trudności dla osób bez doświadczenia z TypeScript i Angular. NestJS czerpie inspirację z architektury Angular, co może stanowić wyzwanie dla osób nieposiadających takiej wiedzy.
- Wciąż braki w niektórych obszarach. NestJS jest stosunkowo nowym frameworkiem, więc może nie dorównywać niektórym ugruntowanym rozwiązaniom opartym na Pythonie i GO.
Firmy korzystające z NestJS
# 1. Adidas
Adidas, producent obuwia i odzieży sportowej, jest jedną z firm, która zdecydowała się na NestJS. Imponujące możliwości tej platformy musiały przyciągnąć uwagę tego giganta do wykorzystania jej w swoim zapleczu.
#2. Capgemini
Capgemini to międzynarodowa firma z Francji oferująca usługi doradcze, technologiczne, outsourcingowe i profesjonalne. Firma ta wykorzystuje NestJS w swoim stosie technologicznym.
#3. Roche
Roche to międzynarodowa firma z branży medycznej, prowadząca działalność w dwóch obszarach: farmaceutyce i diagnostyce. Roche wykorzystuje NestJS jako jedno z narzędzi w swoim stosie technologicznym na swojej głównej stronie internetowej.
Materiały edukacyjne
# 1. NestJS od zera do bohatera
Kurs „NestJS Zero to Hero” uczy programistów, jak budować i wdrażać aplikacje backendowe dla firm, korzystając z TypeScript i Node.js. Obejmuje tworzenie interfejsów API, autoryzację i uwierzytelnianie, testowanie jednostkowe aplikacji Nest oraz interakcję z bazą danych za pomocą TypeORM.
#2. NestJS: kompletny przewodnik dla programistów
Ten kurs uczy programistów, jak tworzyć API backendowe z wykorzystaniem Nest, TypeScript i TypeORM. Kompletny przewodnik prowadzi przez proces konfiguracji, kodowania, testowania i wdrażania aplikacji NestJS. Kurs dostarcza również wiedzy o tym, jak działa platforma sieciowa NestJS.
#3. Master NestJS
Kurs „Master NestJS” uczy, jak budować aplikacje Node.js klasy korporacyjnej za pomocą TypeScript. Kurs omawia między innymi walidację i serializację danych, tokeny JWT, wykorzystanie NestCLI oraz nowoczesne abstrakcje baz danych.
#4. NestJs w praktyce (z MongoDB)
Kurs „NestJS w praktyce” wprowadza w zagadnienia związane z NestJS, począwszy od modułów, kontrolerów, GuardsServices, Pipes i Middleware. Kurs wykorzystuje podejście oparte na projektach, w którym kod jest pisany i umieszczany na GitHubie, a każda sekcja jest udostępniona do pobrania w postaci pliku ZIP.
#5. Nest.js: progresywny framework Node.js
Książka wprowadza programistów w świat NestJS i pokazuje, jak wykorzystać JavaScript i TypeScript. Książka została zaprojektowana jako instrukcja krok po kroku, która ma zapewnić szybkie uruchomienie aplikacji NestJS.
#6. Praktyczny Nest.js: Twórz przejrzyste aplikacje internetowe MVC
Praktyczna książka „Nest.js” wykorzystuje podejście oparte na projekcie, polegające na tworzeniu aplikacji sklepu internetowego, która wykorzystuje różnorodne funkcje NestJS. Książka zawiera krótkie objaśnienia, porady i wskazówki przydatne podczas tworzenia aplikacji NestJS.
Podsumowanie
NestJS jest nie tylko zaawansowanym frameworkiem Node.js, ale również jednym z najpopularniejszych frameworków TypeScript do tworzenia aplikacji serwerowych. Fakt, że oferuje sprawdzone metody kodowania i standardową architekturę, przyciąga wielu programistów, którzy chcą skupić się na logice biznesowej podczas tworzenia aplikacji.