2021-ci ildə JavaScript ən çox istifadə edilən proqramlaşdırma dili idi.
Bu texnologiyanın cəlbediciliyi danılmazdır, bunu JavaScript proqramlaşdırmasına imkan verən çoxlu sayda çərçivələr göstərir.
Frontenddə Angular, React və Vue, həmçinin bir neçəsini qeyd etmək üçün arxa hissədə Express və Next var.
Əlçatan JavaScript-də backend proqramlaşdırması üçün çoxlu gözəl çərçivələrlə siz niyə sadəcə Express və ya Next istifadə etmək əvəzinə fərqli bir şey axtaracağımı düşünə bilərsiniz.
Ola bilsin ki, siz layiqli bir qazanxana ilə inkişaf prosesini tez bir zamanda başlamalısınız və əl ilə yalnız yeni kontrollerlər deyil, həm də xidmətlər əlavə etmək sizi xəstə edir.
Və ya idarə etmək asan olan böyük, miqyaslana bilən proqram təminatı yaratmaq istəyirsiniz. Və ya bəlkə siz sadəcə olaraq daha səmərəli və rahat şəkildə işləmək istəyirsiniz.
Şəraitinizdə hansının doğru olmasından asılı olmayaraq, Nest.js ehtiyaclarınız üçün mükəmməl həll ola bilər.
Bu yazı NestJS anlayışları və praktiki təcrübə təqdim edəcək.
NestJS nədir?
NestJS açıq mənbəli, genişləndirilə bilən və uyğunlaşa bilən mütərəqqi Node çərçivəsidir .Js backend sistemlərinin qurulması, cəlb edilməsi və çətinləşdirilməsi üçün çərçivə. İndi o, ən sürətli artım tempinə malik Node-dir.
js üçün TypeScript çərçivəsi. NestJS miqyaslana bilən, sınaqdan keçirilə bilən və sərbəst bağlanan proqramlar yaratmaq üçün istifadə olunur.
Node-a miqyaslılıq əlavə edir. Js serverləri tamamilə yeni səviyyəyə qaldırıldı. PostgreSQL, MongoDB və MySQL dəstəklənən verilənlər bazaları arasındadır.
NestJS genişləndirilə bilər, çünki o, digər kitabxanalarla birlikdə istifadə edilə bilər; uyğunlaşa bilən tam hüquqlu ekosistemi sayəsində çevikdir. JavaScript xüsusiyyətlərini və dizayn prinsiplərini dəstəklədiyi üçün mütərəqqi.
O, ilk növbədə Angular, React və Vue-dan təsirlənir və daxili asılılıq inyeksiyası ilə gəlir.
Xüsusiyyətləri
- İstifadəsi, öyrənilməsi və mənimsənilməsi sadədir.
- Pulsuz və açıq mənbə (MIT lisenziyası)
- Artan məhsuldarlıq və inkişaf sadəliyi üçün Güclü Komanda Xətti İnterfeysi (CLI).
- İstifadəsi sadə olan vahid test proqramları
- TypeScript, JavaScript-in üst dəsti olan sıx yazılmış bir dildən istifadə olunur.
- Aktiv kod bazasının inkişafı və saxlanması.
- TypeORM, Mongoose, GraphQL, logging, validation, caching, WebSockets və s. kimi məşhur texnologiyalar və ideyalarla interfeysi asanlaşdıran yüzlərlə yuvaya xas modullara dəstək.
NestJS-in tikinti blokları hansılardır?
Nest proqramlarının tikinti komponentləri aşağıda verilmişdir; başqaları da var, lakin bu üçü ən əhəmiyyətlidir. Gəlin onlara tez nəzər salaq.
1. Controllers
Nəzarətçilər daxil olan sorğuları emal etmək və müştərilərə cavab vermək üçün məsuliyyət daşıyırlar. O, xüsusi HTTP sorğularını qəbul edir və marşrutlaşdırma sistemi hansı nəzarətçinin hansı sorğunu alacağını müəyyən edir.
Sonra göndərmək üçün uyğun bir cavab layihəsi hazırlayır. Siniflərin və dekoratorların köməyi ilə sadə bir kollektor qurulur və hər bir nəzarətçi müxtəlif tapşırıqları yerinə yetirmək üçün öz marşrutlarına malikdir.
2. Təchizatçılar
Provayderlər Nest-də əsas ideyadır. Əsas Nest siniflərinin çoxu - xidmətlər, depolar, fabriklər, köməkçilər və s. - provayder kimi idarə oluna bilər.
Provayderin əsas anlayışı ondan ibarətdir ki, o, asılılıq kimi daxil edilə bilər; bu o deməkdir ki, obyektlər bir-biri ilə müxtəlif assosiasiyalar yarada bilər və obyektlərin nümunələrinin “naqil edilməsi” rolu əsasən Nest işləmə vaxtı sisteminə həvalə edilə bilər.
3. Modullar
Modul tətbiqin strukturunun komponentlərini təşkil edən @Module() dekoratoru olan sinifdir. Hər bir proqramda proqram qrafikini qurmaq üçün istifadə edilən kök modulu var və bu, provayder və modul arasında asılılıqları və qarşılıqlı əlaqəni daha da həll edir.
Bu dekorator tətbiq kodunda hansı komponentlərin, nəzarətçilərin və ya digər resursların istifadə ediləcəyini müəyyən etmək və onları vahid dəstdə birləşdirmək üçün Nest.js-ə metadata verir.
Hər bir modul bir şəkildə bağlı olan imkanlar toplusuna malikdir.
NestJS ilə başlayın
1. quraşdırma
Gəlin NestJS-i quraşdıraq və bu addımları yerinə yetirərək onunla layihə yaradaq:
Bunun nəticəsində aşağıdakı kataloq strukturu yaradılacaq:
2. Controllers
Nest-in tikinti blokları nəzarətçilərdir. Bunlar daxil olan sorğuların idarə olunacağı yerlərdir. Aşağıdakı kodda göründüyü kimi HTTP metodu dəyişdiricilərindən (Get, Post, Put, Delete və s.) dekoratorlarından istifadə edərək marşrut yolunu təyin edə bilərsiniz.
Nestjs dekorator yanaşmasından istifadə edir və əsasən Typescript-də işlənib hazırlanır, baxmayaraq ki, o, JavaScript-i də dəstəkləyir. Sorğu orqanını yoxlamaq üçün sinif təsdiqləyicisindən də istifadə edə bilərsiniz.
Mən sadəcə olaraq Nestjs server nümunəsi yaradacağam və qlobal olaraq ValidationPipe əlavə edəcəyəm. Borular yalnız Nəzarətçilərdən əvvəl icra olunan üsullardır. Borular @UsePipes dekoratorundan istifadə edərək metod/arqument səviyyəsində də tətbiq oluna bilər.
3. Təchizatçılar
Provayderlər Nestjs-in digər mühüm komponentidir. İndiyə qədər məlumatları müvəqqəti dəyişəndə saxlayırdım. Məhz buna görə də belə sadə tapşırıq Controller işləyicilərindən istifadə etməklə yerinə yetirilə bilər.
Bununla belə, daha böyük, daha mürəkkəb məntiq üçün kodun ayrılması və təkrar istifadəsi çətin olardı. Bu zaman tədarükçülər daxil olur. Siz @Injectable dekoratorundan istifadə edərək sinifin yuxarı hissəsində provayder elan edə/yara bilərsiniz. Sonra, provayderlərdən istifadə edərək, asılılıq inyeksiyası, giriş və digər tapşırıqları yerinə yetirə bilərsiniz.
4. Modullar
Nestjs modulları qlobal deyil; əvəzinə, onların dərinliyi var.
Bununla belə, hər hansı digər modullarla da paylaşıla bilər. Baxmayaraq ki, Angular kimi Qlobal Modullar təklif edir, Xidmətləri/Nəzarətçiləri Nestjs-də ən çox istifadə olunduğu modulda saxlamaq daha məqsədəuyğundur.
NestCLI çox vaxt modullar istehsal etmək üçün istifadə olunur və həmin modulun kontekstində yaradılan provayderlər/nəzarətçilər CLI tərəfindən avtomatik əlavə edilir. Bunlar xüsusiyyət modulları kimi tanınır.
5. İstisna Filtrləri
İstisna filtrləri Nəzarətçi bir istisna atdıqda işə salınan səhv idarəediciləridir. O, problemi avtomatik idarə edir və müvafiq, istifadəçi dostu səhv mesajı verir.
Bir çox HttpException irsi İstisnalar @nestjs/common paketi tərəfindən təmin edilir, o cümlədən NotFoundException, BadRequestException, NotAcceptableException, UnauthorizedException və bir çox başqaları. Siz hətta öz İstisna Filterinizi dizayn edə bilərsiniz.
6. Orta proqram
Marşrut idarəçisindən əvvəl çağırılan funksiya ara proqram adlanır. Sorğu və cavab obyektləri, eləcə də proqramın sorğu-cavab dövründəki növbəti() ara proqram funksiyası ara proqram funksiyaları üçün əlçatandır.
Next adlı dəyişən adətən növbəti ara proqram funksiyasını müəyyən etmək üçün istifadə olunur. Fərdi Nest ara proqramı @Injectable() dekoratorundan istifadə edərək metod və ya sinifdə həyata keçirilə bilər.
7. Mühafizəçilər
Mühafizəçilər yalnız bir şeyə görə məsuliyyət daşıyırlar. Müəyyən şəraitə (xüsusən, istifadəçi tərəfindən müəyyən edilmiş məntiq) əsasən sorğunun nəzarətçi tərəfindən emal edilib-edilməyəcəyini qiymətləndirmək onların məsuliyyətidir.
O, autentifikasiya/avtorizasiya üçün faydalıdır və Nestjs-də tövsiyə olunan üsuldur.
Doğrulama/icazələr və s., ara proqram vasitəsi ilə həyata keçirilə bilsə də, bu, ekspress və ya digər HTTP serverlərində edilmir, çünki onların əlaqəli güclü konteksti yoxdur və sorğunun işlənməsi üçün hansı metoddan istifadə ediləcəyini bilmək üçün heç bir səbəb yoxdur.
Üstünlüklər
- Çərçivə son nöqtələrdən tutmuş Swagger sənədlərinə qədər hər şeyi hazırlamaq üçün istifadə olunan annotasiyalardan çox asılıdır. Son nöqtələr əsas və səliqəlidir və qeydlər ümumiyyətlə inkişafı asanlaşdırır.
- Nest.js modul əsaslı çərçivə olduğundan, ümumi təyinatlı modulları xaric etmək və kodu bir çox layihələrdə təkrar istifadə etmək asandır.
- Nest.js qovluq strukturuna Angular əhəmiyyətli dərəcədə təsir edir. Nest xidmətini dizayn edərkən, bu, minimum fasilələrə imkan verir.
- Komponentlərin öz kataloqları var, kökdə proqram modulu və əsas fayl var. Quruluşun sadəliyinə görə, tətbiqin strukturuna deyil, son nöqtələrin və onların müştərilərinin dizaynına daha çox diqqət yetirilə bilər.
- Nest, Angular kimi, Node Package Manager vasitəsilə əldə edilə bilən Nestjs/cli adlı gözəl əmr xətti alətini təklif edir.
Dezavantajları
- Nest-in TypeScript istifadəsi və Angular inteqrasiyası baxımından üstünlüyü var, lakin nəhəng bir korporasiyanın maliyyə dəstəyindən məhrumdur.
- Sənədlərin olmaması Nest istifadəçiləri üçün ən böyük təhlükədir. Çərçivə digər çərçivələrlə əla qarşılıqlı əlaqəyə malik olsa da, sənədlər seyrəkdir və heç bir potensial çətinlikləri həll etmir.
- Nest TypeScript istifadəsi və Angular baxımından üstünlüyə malikdir.
Nəticə
NestJS tərtibatçılara böyük imkanlar təqdim edir. İnkişafa başlamaq üçün sizə lazım olan hər şeydir yeni proqram yaradın və getməyə hazırsan. Bu çərçivə dərhal əhəmiyyətli təkan təmin edir, eyni zamanda uyğun proqram arxitekturasını yaratmaqla əlavə mərhələləri keçməyə kömək edir.
O, həm idarə oluna bilən, həm də uzunömürlü tətbiqlər yaratmaq üçün qabaqcıl üsul və texnologiyadan istifadə edir. O, GraphQL, WebSockets-ə qoşulmaq və mikroservislər qurmaq üçün istifadə edilə bilər.
Cavab yaz