Wróć do strony głównej
NestJS

Przywitaj NAN Stack

React z Express i Angular z NestJS

Najpopularniejszym frameworkiem dla Node.js jest wciąż Express.js. Po stronie frontendu jest trzech królów: Angular, React, i Vue. Po dodaniu najpopularniejszej bazy NoSQL, MongoDb, dostajemy kombinację najczęściej spotykanych stacków dla JavaScript deweloperów: MEAN, MERN, and MEVN.

Możemy znaleźć wiele podobieństw pomiędzy React i Express. Obydwa rozwiązania są minimalistyczne, bazujące na JavaScript oraz udostępniają tylko najważniejsze funkcjonalności w swojej głównej paczce. Oferują dużą elastyczność w doborze narzędzi i w strukturyzacji aplikacji.

Dla Angular odpowiednikiem po stronie serwera jest NestJS, którego twórcy silnie inspirowali się rozwiązaniami od kolegów z Google podczas prac nad swoim projektem.

To co Angular i Nest mają wspólnego oraz co jednocześnie wyróżnia je od poprzedniego zestawu to:

  • Użycie TypeScriptu jako główny język
  • Szerokie zastosowanie dekoratorów
  • System wstrzykiwania zależności oparty na modułach (z importowaniem, eksportowaniem i definiowaniem dostawców)
  • Zestaw oficjalnie wspieranych dodatkowych bibliotek
  • Główna biblioteka z dużą ilością funkcjonalności gotowych do użycia
  • CLI

Każde z tych podejść ma swoje plusy i minusy. Największym błędem jest mieszanie różnych filozofii w jednym zestawie technologicznym – o ile elementy zestawu MERN pasują do siebie całkiem dobrze, o tyle nie można tego samego powiedzieć o MEAN.

Dlatego chcę zaproponować znacznie lepszą alternatywę: NAN.

NAN

NAN jest połączeniem trzech technologii: NestJS, Angular i Nx. Naturalne połączenie NestJS i Angular zostało opisane powyżej. Nx jest zestawem narzędzi do pomocy w pracy z monorepo, ale jest także bardzo przydatny przy tworzeniu pojedynczych, złożonych aplikacji. Dla full-stack dewelopera możliwość współdzielenia kodu, narzędzi oraz repozytorium pomiędzy backendem i frontendem jest nieoceniona – Nx nam to oferuje (i znacznie więcej).

Co więcej, w nrwl także zauważono zależności opisane wyżej i dodano możliwość tworzenia projektów w zestawie Angular-Nest lub React-Express.

Relacyjne bazy danych nie zniknęły

Ostatnią ważną różnicą pomiędzy NAN i MEAN jest pominięcie bazy danych. Zawarcie jednej w nowym zestawie byłoby niepotrzebnym ograniczeniem. Dobry backend lub fullstack deweloper powinien być zaznajomiony z bazami NoSQL oraz tradycyjnymi – relacyjnymi. Co ważniejsze, powinien móc świadomie wybrać odpowiednią bazę danych do wymagań projektowych i jego zestaw technologiczny nie powinien być tutaj dyskryminatorem.

Mam tutaj na myśli fakt, że każdy deweloper Node.js jest na pewno świadom, że NoSQL nie jest odpowiednie do pewnych typów aplikacji (np. z dużą ilością obliczeń) i powinien uprzedzić zleceniodawcę, że inna technologia mogłaby się w tym miejscu lepiej sprawdzić. Nawet jeśli NoSQL jest jedyną technologią bazodanową jaką znasz, jej zastosowanie w projekcie powinno być sensownie poparte.

Podsumowanie

MEAN zyskał niesamowitą popularność, posiada parę wariantów oraz utorował ścieżkę, którą podążyło wiele firm i deweloperów przy wyborze technologii, w których będą się specjalizować. Jednakże, aktualnie mamy godnego następcę do którego ci, którzy doceniają styl Angulara i NestJSa, zdecydowanie powinni rozważyć przejść. Wierzę że NAN zyska taką samą popularność jak MEAN, wprowadzi usprawnienia oraz zajmie należne mu miejsce w środowisku JavaScript.

O autorze

Maciej Sikorski

Maciej najwięcej czasu spędza projektując aplikacje w Angular i w Node.js, ale poza tym tworzy i wspiera biblioteki oraz inne narzędzia, które wykorzystuje w codziennej pracy. Jest bardzo zaangażowany w rozwój społeczności i technologii związanej z frameworkiem NestJS. Maciek dodatkowo prowadzi bloga anglojęzycznego na medium o tematyce NestJS i Angular.

Zapisz się do naszego newslettera. Bądź na bieżąco z najnowszymi trendami, poradami, meetupami i stań się częścią społeczności Angulara w Polsce. Rynek pracy docenia członków społeczności.

2 komentarzy

  1. Pingback: NestJS - Backend w stylu Angular - Angular.love

  2. Pingback: NestJS - Angular style backend framework - Angular.love

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *