2021 წელს JavaScript იყო ყველაზე ფართოდ გამოყენებული პროგრამირების ენა.
ამ ტექნოლოგიის მიმზიდველობა უდაოა, როგორც ჩანს ჩარჩოების დიდი რაოდენობით, რომლებიც საშუალებას აძლევს JavaScript პროგრამირებას.
არის Angular, React და Vue წინა მხარეს, ასევე Express და Next უკანა მხარეს, რომ აღვნიშნო რამდენიმე.
JavaScript-ში პროგრამირების ამდენი მშვენიერი ჩარჩოებით, შეიძლება ფიქრობთ, რატომ მოვიძიო რაღაც განსხვავებული, ვიდრე უბრალოდ გამოვიყენო Express ან Next.
შესაძლოა, თქვენ გჭირდებათ სწრაფად დაიწყოთ განვითარების პროცესი წესიერი ქვაბის დანადგარით და ხელით დაამატოთ არა მხოლოდ ახალი კონტროლერები, არამედ სერვისებიც ავად გახდებით.
ან გსურთ შექმნათ დიდი, მასშტაბირებადი პროგრამული უზრუნველყოფა, რომლის მართვა მარტივია. ან იქნებ უბრალოდ გსურთ უფრო ეფექტური და მოსახერხებელი მუშაობა.
მიუხედავად იმისა, თუ რომელია ჭეშმარიტი თქვენს ვითარებაში, Nest.js შეიძლება იყოს შესანიშნავი გადაწყვეტა თქვენი საჭიროებისთვის.
ეს პოსტი უზრუნველყოფს NestJS-ის შეხედულებებს და ასევე პრაქტიკულ გამოცდილებას.
რა არის NestJS?
NestJS არის პროგრესული Node ჩარჩო, რომელიც არის ღია, გაფართოებადი და ადაპტირებადი .ჯს ჩარჩო სისტემების მშენებლობის, ჩართულობისა და გამოწვევისთვის. ახლა ის არის კვანძი ყველაზე სწრაფი ზრდის ტემპით.
TypeScript ჩარჩო js-ისთვის. NestJS გამოიყენება აპლიკაციების შესაქმნელად, რომლებიც არის მასშტაბირებადი, ტესტირებადი და თავისუფლად დაკავშირებული.
ის ამატებს მასშტაბურობას Node-ს. Js სერვერები გადაიყვანეს სრულიად ახალ დონეზე. PostgreSQL, MongoDB და MySQL მხარდაჭერილ მონაცემთა ბაზებს შორისაა.
NestJS გაფართოებულია, რადგან მისი გამოყენება შესაძლებელია სხვა ბიბლიოთეკებთან; მოქნილი მისი ადაპტირებადი სრულფასოვანი ეკოსისტემის გამო. და პროგრესული, რადგან ის მხარს უჭერს JavaScript ფუნქციებს და დიზაინის პრინციპებს.
მასზე ძირითადად გავლენას ახდენს Angular, React და Vue და გააჩნია ჩაშენებული დამოკიდებულების ინექცია.
მისი მახასიათებლებია;
- მარტივია გამოყენება, სწავლა და დაუფლება.
- უფასოა და ღია (MIT ლიცენზია)
- ძლიერი ბრძანების ხაზის ინტერფეისი (CLI) გაზრდილი პროდუქტიულობისა და განვითარების სიმარტივისთვის
- ერთეულის ტესტირების პროგრამები, რომლებიც მარტივი გამოსაყენებელია
- გამოიყენება TypeScript, მჭიდროდ აკრეფილი ენა, რომელიც არის JavaScript-ის სუპერკომპლექტი.
- აქტიური კოდების ბაზის შემუშავება და შენარჩუნება.
- ასობით ბუდე-სპეციფიკური მოდულის მხარდაჭერა, რაც გაადვილებს ინტერფეისს პოპულარულ ტექნოლოგიებთან და იდეებთან, როგორიცაა TypeORM, Mongoose, GraphQL, ჟურნალი, ვალიდაცია, ქეშირება, WebSockets და სხვა.
რა არის NestJS-ის სამშენებლო ბლოკები?
Nest აპლიკაციების შენობის კომპონენტები ჩამოთვლილია ქვემოთ; არის სხვებიც, მაგრამ ეს სამი ყველაზე მნიშვნელოვანია. მოდით შევხედოთ მათ სწრაფად.
1. კონტროლერები
კონტროლერები პასუხისმგებელნი არიან შემომავალი მოთხოვნების დამუშავებასა და კლიენტებზე რეაგირებაზე. ის იღებს კონკრეტულ HTTP მოთხოვნებს და მარშრუტიზაციის სისტემა განსაზღვრავს რომელი კონტროლერი რომელ მოთხოვნას მიიღებს.
შემდეგ ის ადგენს შესაბამის პასუხს გასაგზავნად. კლასებისა და დეკორატორების დახმარებით შენდება მარტივი კოლექტორი და თითოეულ კონტროლერს აქვს საკუთარი მარშრუტები სხვადასხვა ამოცანების შესასრულებლად.
2. მომწოდებლები
პროვაიდერები Nest-ის მთავარი იდეაა. Nest-ის მრავალი ძირითადი კლასი - სერვისები, საცავი, ქარხნები, დამხმარეები და ა.შ. - შეიძლება დამუშავდეს როგორც პროვაიდერები.
პროვაიდერის ძირითადი ცნება არის ის, რომ მისი ინექცია შეიძლება იყოს დამოკიდებულების სახით; ეს გულისხმობს, რომ ობიექტებს შეუძლიათ შექმნან სხვადასხვა ასოციაციები ერთმანეთთან და ობიექტების ინსტანციების „გაყვანილობის“ როლი ძირითადად შეიძლება გადაეცეს Nest Runtime სისტემას.
3. მოდულები
მოდული არის კლასი @Module() დეკორატორით, რომელიც აწყობს აპლიკაციის სტრუქტურის კომპონენტებს. თითოეულ აპლიკაციას აქვს root მოდული, რომელიც გამოიყენება აპლიკაციის გრაფიკის ასაგებად, რომელიც შემდგომ აგვარებს დამოკიდებულებებსა და ურთიერთქმედებებს პროვაიდერსა და მოდულს შორის.
ეს დეკორატორი აწვდის მეტამონაცემებს Nest.js-ს, რათა დაადგინოს რომელი კომპონენტები, კონტროლერები ან სხვა რესურსები იქნება გამოყენებული აპლიკაციის კოდში და გააერთიანოს ისინი ერთ ნაკრებში.
თითოეულ მოდულს აქვს შესაძლებლობების კოლექცია, რომლებიც დაკავშირებულია გარკვეულწილად.
NestJS-ის დაწყება
1. მონტაჟი
მოდით დავაინსტალიროთ NestJS და შევქმნათ პროექტი ამ ნაბიჯების შემდეგ:
ამის შედეგად შეიქმნება დირექტორია შემდეგი სტრუქტურა:
2. კონტროლერები
Nest-ის სამშენებლო ბლოკები არის კონტროლერები. ეს ის ადგილებია, სადაც შემომავალი მოთხოვნები განიხილება. თქვენ შეგიძლიათ მიუთითოთ მარშრუტის გზა HTTP მეთოდის მოდიფიკატორების (მიიღეთ, გამოაქვეყნეთ, განათავსეთ, წაშლა და ასე შემდეგ) დეკორატორების გამოყენებით, როგორც ეს მოცემულია ქვემოთ მოცემულ კოდში.
Nestjs იყენებს დეკორატორის მიდგომას და ძირითადად განვითარებულია Typescript-ში, თუმცა ის ასევე მხარს უჭერს JavaScript-ს. თქვენ ასევე შეგიძლიათ გამოიყენოთ კლასის ვალიდატორი მოთხოვნის სხეულის დასადასტურებლად.
მე უბრალოდ ვაპირებ შევქმნა Nestjs სერვერის მაგალითი და დავამატო ValidationPipe გლობალურად. მილები მხოლოდ მეთოდებია, რომლებიც შესრულებულია კონტროლერების წინაშე. მილები ასევე შეიძლება გამოყენებულ იქნას მეთოდის/არგუმენტის დონეზე @UsePipes დეკორატორის გამოყენებით.
3. მომწოდებლები
პროვაიდერები Nestjs-ის კიდევ ერთი მნიშვნელოვანი კომპონენტია. ჯერჯერობით, მე ვინახავდი მონაცემებს დროებით ცვლადში. სწორედ ამიტომ, ასეთი მარტივი ამოცანის შესრულება შესაძლებელია Controller-ის დამმუშავებლების გამოყენებით.
თუმცა, უფრო დიდი, უფრო რთული ლოგიკით, კოდის გამოყოფა და ხელახალი გამოყენება რთული იქნება. ამ დროს შემოდიან მომწოდებლები. თქვენ შეგიძლიათ გამოაცხადოთ/შექმნათ პროვაიდერი კლასის თავზე @Injectable decorator-ის გამოყენებით. შემდეგ, პროვაიდერების გამოყენებით, შეგიძლიათ გააკეთოთ დამოკიდებულების ინექცია, შესვლა და სხვა ამოცანები.
4. მოდულები
Nestjs მოდულები არ არის გლობალური; სამაგიეროდ, მათ აქვთ სიღრმე.
თუმცა, მისი გაზიარება შესაძლებელია ნებისმიერ სხვა მოდულთანაც. მიუხედავად იმისა, რომ ის, ისევე როგორც Angular, გთავაზობთ გლობალურ მოდულებს, უფრო მიზანშეწონილია სერვისების/კონტროლერების შენარჩუნება მოდულში, სადაც ისინი ყველაზე ხშირად გამოიყენება Nestjs-ში.
NestCLI უმეტესად გამოიყენება მოდულების შესაქმნელად და ამ მოდულის კონტექსტში გენერირებული პროვაიდერები/კონტროლერები ავტომატურად ამატებენ CLI-ს. ეს ცნობილია როგორც ფუნქციური მოდულები.
5. გამონაკლისი ფილტრები
გამონაკლისის ფილტრები არის შეცდომების დამმუშავებლები, რომლებიც გამოიძახება, როდესაც კონტროლერი აყენებს გამონაკლისს. ის ავტომატურად მართავს საკითხს და აწვდის შესაბამის, მოსახერხებელი შეცდომის შეტყობინებას.
ბევრი HttpException მემკვიდრეობით მიღებული გამონაკლისი მოცემულია პაკეტით @nestjs/common, მათ შორის NotFoundException, BadRequestException, NotAcceptableException, UnauthorizedException და მრავალი სხვა. თქვენ შეგიძლიათ შექმნათ თქვენი საკუთარი ExceptionFilter.
6. შუალედური პროგრამა
ფუნქციას, რომელიც გამოძახებულია მარშრუტის დამმუშავებლის წინ, ეწოდება შუა პროგრამა. მოთხოვნისა და პასუხის ობიექტები, ისევე როგორც შემდეგი() Middleware ფუნქცია აპლიკაციის მოთხოვნა-პასუხის ციკლში, ხელმისაწვდომია Middleware ფუნქციებისთვის.
შემდეგი შუალედური ფუნქციის იდენტიფიცირებისთვის ცვლადი სახელწოდებით next ჩვეულებრივ გამოიყენება. Custom Nest Middleware შეიძლება განხორციელდეს მეთოდში ან კლასში @Injectable() დეკორატორის გამოყენებით.
7. მცველები
მესაზღვრეები მხოლოდ ერთ რამეზე არიან პასუხისმგებელი. მათი პასუხისმგებლობაა შეაფასონ, დამუშავდება თუ არა მოთხოვნა კონტროლერის მიერ კონკრეტული გარემოებების საფუძველზე (კონკრეტულად, მომხმარებლის მიერ განსაზღვრული ლოგიკა).
ის სასარგებლოა ავთენტიფიკაციის/ავტორიზაციისთვის და არის რეკომენდებული მეთოდი Nestjs-ში.
მიუხედავად იმისა, რომ ავტორიზაცია/ნებართვები და ა.შ. შეიძლება განხორციელდეს შუაპროგრამის გამოყენებით, ეს არ კეთდება ექსპრეს ან სხვა HTTP სერვერებზე, რადგან მათ არ აქვთ დაკავშირებული ძლიერი კონტექსტი და არ აქვთ მიზეზი, რომ იცოდნენ, რომელი მეთოდი იქნება გამოყენებული მოთხოვნის დასამუშავებლად.
უპირატესობები
- ჩარჩო დიდწილად არის დამოკიდებული ანოტაციებზე, რომლებიც გამოიყენება რაიმეს დასამზადებლად ბოლო წერტილებიდან Swagger-ის დოკუმენტაციამდე. ბოლო წერტილები ძირითადი და მოწესრიგებულია, ხოლო ანოტაციები ზოგადად ამარტივებს განვითარებას.
- მარტივია ზოგადი დანიშნულების მოდულების ექსტერნალიზება და კოდის ხელახლა გამოყენება ბევრ პროექტში, ვინაიდან Nest.js არის მოდულზე დაფუძნებული ჩარჩო.
- Nest.js-ის საქაღალდის სტრუქტურაზე Angular-ის მნიშვნელოვანი გავლენაა. Nest სერვისის დიზაინის შექმნისას, ეს იძლევა მინიმალური შეფერხების საშუალებას.
- კომპონენტებს აქვთ საკუთარი დირექტორიები, ფესვი შეიცავს აპლიკაციის მოდულს და მთავარ ფაილს. სტრუქტურის სიმარტივის გამო, უფრო მეტი ყურადღება შეიძლება მიექცეს საბოლოო წერტილებისა და მათი მომხმარებლების დიზაინს, ვიდრე განაცხადის სტრუქტურას.
- Nest, ისევე როგორც Angular, გთავაზობთ კარგ ბრძანების ინსტრუმენტს, Nestjs/cli, რომელიც ხელმისაწვდომია Node Package Manager-ის მეშვეობით.
ნაკლოვანებები
- Nest-ს აქვს უპირატესობა TypeScript-ის გამოყენებისა და Angular ინტეგრაციის თვალსაზრისით, მაგრამ მას აკლია უზარმაზარი კორპორაციის ფინანსური მხარდაჭერა.
- დოკუმენტაციის ნაკლებობა ყველაზე დიდ საფრთხეს უქმნის Nest-ის მომხმარებლებს. მიუხედავად იმისა, რომ ჩარჩოს აქვს შესანიშნავი ურთიერთქმედება სხვა ჩარჩოებთან, დოკუმენტაცია მწირია და არ ეხება პოტენციურ სირთულეებს.
- Nest-ს აქვს უპირატესობა TypeScript-ის გამოყენებისა და Angular-ის თვალსაზრისით.
დასკვნა
NestJS დეველოპერებს უზარმაზარ წინსვლას უწევს. განვითარების დასაწყებად, თქვენ მხოლოდ უნდა გააკეთოთ შექმენით ახალი აპლიკაცია და შენ კარგად წახვალ. ეს ჩარჩო დაუყოვნებლივ იძლევა მნიშვნელოვან სტიმულს, და ასევე დაგეხმარებათ დამატებითი ეტაპების გადადგმაში შესაბამისი აპლიკაციის არქიტექტურის შექმნით.
ის იყენებს უახლესი მეთოდებსა და ტექნოლოგიას აპლიკაციების შესაქმნელად, რომლებიც ერთდროულად მართვადი და გრძელვადიანია. მისი გამოყენება შესაძლებელია GraphQL-თან, WebSockets-თან დასაკავშირებლად და მიკროსერვისების შესაქმნელად.
დატოვე პასუხი