NestJS je moderní framework pro Node.js, který se zaměřuje na tvorbu škálovatelných, efektivních a spolehlivých serverových aplikací.
Jeho primárním cílem je odstranění chaosu v kódových základnách. Díky modulární struktuře umožňuje snadnou organizaci kódu do samostatných celků.
NestJS je založen na TypeScriptu a využívá pod kapotou ExpressJS. Je oblíbený mezi vývojáři, kteří chtějí naplno využít výhod statické typové kontroly TypeScriptu. Tento framework integruje prvky funkčního reaktivního programování (FRP), objektově orientovaného programování (OOP) a funkcionálního programování (FP).
Proč si vybrat NestJS?
NestJS je vhodný i pro začátečníky díky své jasné struktuře a intuitivnímu rozhraní příkazového řádku (CLI). To umožňuje vývojářům generovat nové funkce pouhým jedním příkazem.
NestJS poskytuje předpřipravené moduly, služby, ovladače a testovací sady, které usnadňují rychlý start. Nabízí také množství vzorů a šablon pro urychlení celého procesu vývoje.
Pro ty, kteří mají zkušenosti s JavaScriptem, konkrétně s cykly, syntaxí a podmínkami, a s frameworkem Angular, bude učení NestJS relativně snadné.
Klíčové vlastnosti NestJS
Základem je TypeScript
NestJS je postavený na TypeScriptu, nadstavbě jazyka JavaScript. TypeScript přináší lepší vývojářskou zkušenost, protože eliminuje nutnost manuální kontroly chyb při každé změně v kódu. Nabízí všechny funkce JavaScriptu a navíc přidává některé užitečné vlastnosti.
Kontejner pro injekci závislostí
Injekce závislostí odděluje proces inicializace objektů používaných třídou od samotné třídy. Třída se v tomto případě nazývá „klient“ a její závislosti „služby“. Díky vestavěné DI je aplikace v NestJS efektivnější a modulárnější.
Výkonné rozhraní příkazového řádku (CLI)
S NestCLI můžete inicializovat, vyvíjet a spravovat všechny vaše aplikace NestJS. CLI umožňuje například:
- Vytvořit nový projekt
- Spustit projekt ve vývojovém režimu
- Sestavit a zabalit aplikaci pro produkční nasazení
Modularizace
Každá aplikace NestJS má alespoň jeden modul, přičemž ‚Root‘ modul je ten základní. V typické aplikaci NestJS je každá logická část aplikace umístěna v rámci hranic domény (modulu). Toto nastavení usnadňuje organizaci komponent, kdy aplikace má více modulů s úzce související sadou funkcí.
Testování jednotek
Automatizované testování přináší mnoho výhod, ale proces nastavení může být náročný. NestJS disponuje funkcemi, které týmům usnadňují vytváření a automatizaci testů. Výhodou je, že ho lze použít s různými testovacími nástroji. Systém injekce závislostí NestJS je k dispozici i při testování, což umožňuje snadné mockování komponent.
Nezávislost na databázi
S NestJS se můžete snadno integrovat s jakoukoli SQL nebo NoSQL databází podle vašich preferencí. Připojení k databázi je velmi jednoduché, stačí pouze nahrát příslušný ovladač Node.js.
Podpora různých knihoven
NestJS je kompatibilní s širokou škálou nástrojů, což urychluje vývoj aplikací. Framework nativně podporuje protokoly pro logování, ověřování, ukládání do mezipaměti, WebSockets, TypeORM, Mongoose a GraphQL bez nutnosti další konfigurace.
Architektura a pracovní postup NestJS
NestJS má třívrstvou architekturu, kterou tvoří kontrolery, poskytovatelé a moduly. Tato struktura umožňuje vývojářům psát čistý, nepřekrývající se kód.
Zdroj obrázku: betterprogramming
Kontrolery
Kontrolery v NestJS slouží jako spojovací článek mezi požadavky klientů a jejich odpověďmi. Směrovací mechanismus přesměruje HTTP požadavek na odpovídající kontroler. Framework využívá dekorátory a třídy pro tvorbu kontrolerů. Každá metoda třídy je namapována na trasu, která přijímá specifický požadavek.
Poskytovatelé
Poskytovatelé jsou základními stavebními kameny NestJS. Jsou vkládány jako závislosti a vytvářejí vztahy mezi objekty. Třídy, jako jsou pomocníci, služby nebo úložiště, se stávají poskytovateli po přidání dekorátoru `@Injectable()`. Takové poskytovatele lze vložit do třídy přes konstruktor a NestJS se postará o vyřešení závislostí.
Moduly
Modul v NestJS sdružuje úzce související funkce. Každá aplikace má jako vstupní bod kořenový modul. Použití více modulů je vhodné pro dosažení organizovaného a snadno čitelného kódu. Modul je definován pomocí dekorátoru `@Module()`, který poskytuje informace o závislostech, kontrolerech a poskytovatelích spojených s daným modulem.
Začínáme s NestJS
Před začátkem se ujistěte, že máte nainstalované Node.js a npm. Potřebujete běhové prostředí a Node.js je pro toto nastavení ideální. Vyžaduje se verze >= 12 (s výjimkou v13). Následujícími příkazy můžete zkontrolovat, zda jsou Node.js a npm nainstalovány:
node -v
npm -v
Pokud jsou oba nainstalované, měl by se zobrazit výstup podobný tomuto:
Pokud je nemáte, nainstalujte je z oficiálních stránek. Node.js i npm se instalují společně.
- Nainstalujte Nest CLI pomocí následujících příkazů:
npm i -g @nestjs/cli
nest new nazev-projektu
Pro demonstrační účely zvolíme název projektu „moje-nest-app“. NestJS vám umožňuje pracovat s TypeScriptem nebo čistým JavaScriptem. Vyberte si preferovanou volbu a stiskněte Enter. Po vytvoření aplikace se nastaví struktura souborů a složka „src“ bude obsahovat několik základních souborů:
- Spusťte aplikaci a zobrazte první výpis „Hello World“
Po instalaci spusťte následující příkazy pro spuštění vývojového serveru:
cd moje-nest-app
npm run start
Do prohlížeče zadejte adresu http://localhost:3000/ a měla by se zobrazit vaše první „Hello World“ v NestJS.
NestJS: Výhody
- Snadné učení. NestJS je snadné se naučit, zejména pokud máte zkušenosti s Angularem nebo obecné znalosti JavaScriptu. Rozsáhlá dokumentace usnadňuje práci s tímto frameworkem.
- Flexibilita. S NestJS můžete vytvářet různé typy aplikací. Od MVC, GraphQL, RESTful API až po webové sokety.
- Velké množství modulů. Moduly vytvářené komunitou umožňují vývojářům snadno strukturovat různé funkce při vytváření serverových aplikací.
- Rychlý vývoj a dobrá architektura. S NestJS nemusíte vše vytvářet od začátku. Framework má pevnou architekturu, která usnadňuje pochopení kódu.
NestJS: Nevýhody
- Méně vhodné pro uživatele bez zkušeností s TypeScriptem a Angularem. NestJS si vypůjčuje mnoho z architektury Angularu, takže uživatelům bez těchto znalostí může trvat delší dobu, než pochopí syntaxi a strukturu.
- Stále se vyvíjí. NestJS je relativně mladý a nemusí konkurovat zavedeným frameworkům založeným na Pythonu a GO.
Společnosti využívající NestJS
#1. Adidas
Adidas, výrobce a návrhář obuvi, patří mezi společnosti využívající NestJS. Jeho výhody musely přesvědčit tohoto obuvnického giganta, aby ho použil pro svůj backend.
#2. Capgemini
Capgemini je francouzská nadnárodní společnost, která poskytuje poradenství, technologie, outsourcing a profesionální služby. Tato společnost využívá NestJS ve svém technologickém zásobníku.
#3. Roche
Roche je nadnárodní zdravotnická společnost s dvěma divizemi: farmaceutickou a diagnostickou. NestJS je jednou z technologií, kterou Roche využívá na svém hlavním webu.
Výukové zdroje
#1. NestJS Zero to Hero
NestJS Zero to Hero učí vývojáře vytvářet a nasazovat firemní backendové aplikace s pomocí TypeScriptu a Node.js. Kurz se zabývá tvorbou API, autorizací a ověřováním, testováním jednotek a integrací s databázemi pomocí TypeORM.
#2. NestJS: Kompletní příručka pro vývojáře
Tento kurz učí, jak vytvářet backendová API pomocí Nest, TypeScript a TypeORM. Pokrývá vše od nastavení, přes kódování, testování až po nasazení. Nabízí také pohled do zákulisí frameworku NestJS.
#3. Mistr NestJS
Mistr NestJS vás naučí vyvíjet firemní aplikace Node.js s TypeScriptem. Kurz se zaměřuje mimo jiné na validaci a serializaci dat, principy fungování JWT tokenů, práci s NestCLI a moderní abstrakci databází.
#4. NestJs v praxi (s MongoDB)
NestJS in Practice vás naučí vše o NestJS od modulů, ovladačů, Guards, Services, Pipes až po Middleware. Kurz využívá projektový přístup, kdy kód vytváříte a hostujete na GitHubu s možností stažení ZIP souborů pro každou sekci.
#5. Nest.js: Progresivní rámec Node.js
Tato kniha představuje NestJS a možnosti využití JavaScriptu a TypeScriptu. Je navržena jako praktický návod, abyste svou aplikaci NestJS mohli nastavit a spustit během chvilky.
#6. Praktické Nest.js: Vyvíjejte čisté webové aplikace MVC
Praktická kniha Nest.js využívá projektový přístup k vytvoření aplikace internetového obchodu. Kniha obsahuje krátké diskuze, tipy a užitečné fráze při vývoji aplikace NestJS.
Závěr
NestJS je nejen výkonný framework pro Node.js, ale také jeden z nejpopulárnějších frameworků pro serverové aplikace postavených na TypeScriptu. Nabízí osvědčené postupy kódování a standardní vývojovou architekturu. Právě to přitahuje inženýry, kteří se chtějí zaměřit na budování obchodní logiky při vývoji aplikací.