2021 yilda JavaScript eng koʻp qoʻllaniladigan dasturlash tili boʻldi.
Ushbu texnologiyaning jozibadorligini inkor etib bo'lmaydi, buni JavaScript dasturlash imkonini beruvchi juda ko'p ramkalar ko'rish mumkin.
Old tomonda Angular, React va Vue, shuningdek, bir nechtasini eslatib o'tish uchun orqa tomonda Express va Next mavjud.
JavaScript-da backend dasturlash uchun juda ko'p ajoyib ramkalar mavjud bo'lsa, nima uchun men Express yoki Next dan ko'ra boshqacha narsani qidiraman deb o'ylayotgan bo'lishingiz mumkin.
Ehtimol, siz rivojlanish jarayonini tezda yaxshi qozon bilan boshlashingiz kerak va qo'lda nafaqat yangi kontrollerlar, balki xizmatlar ham sizni kasal qiladi.
Yoki boshqarish oson bo'lgan katta, kengaytiriladigan dasturiy ta'minot yaratmoqchisiz. Yoki siz shunchaki samaraliroq va qulayroq ishlashni xohlaysiz.
Sizning sharoitingizda qaysi biri to'g'ri bo'lishidan qat'i nazar, Nest.js ehtiyojlaringiz uchun mukammal yechim bo'lishi mumkin.
Bu post NestJS haqida tushunchalar hamda amaliy tajriba bilan taʼminlaydi.
NestJS nima?
NestJS ochiq manbali, kengaytiriladigan va moslashtiriladigan progressiv Node ramkasi .Js backend tizimlarini yaratish, jalb qilish va qiyinlashtirish uchun ramka. Endi bu eng tez o'sish sur'atiga ega bo'lgan tugun.
JS uchun TypeScript ramka. NestJS kengaytiriladigan, sinovdan o'tkaziladigan va erkin bog'langan ilovalarni yaratish uchun ishlatiladi.
U Node-ga miqyoslilikni qo'shadi. Js serverlari butunlay yangi darajaga ko'tarildi. PostgreSQL, MongoDB va MySQL qo'llab-quvvatlanadigan ma'lumotlar bazalari qatoriga kiradi.
NestJS kengaytirilishi mumkin, chunki u boshqa kutubxonalar bilan ishlatilishi mumkin; moslashuvchan to'liq huquqli ekotizim tufayli moslashuvchan. Va progressiv, chunki u JavaScript xususiyatlari va dizayn tamoyillarini qo'llab-quvvatlaydi.
Unga asosan Angular, React va Vue ta'sir ko'rsatadi va o'rnatilgan qaramlik in'ektsiyasi bilan birga keladi.
Xususiyatlari
- Foydalanish, o‘rganish va o‘zlashtirish oson.
- Bu bepul va Ochiq manba (MIT litsenziyasi)
- Kuchli buyruq qatori interfeysi (CLI) mahsuldorlikni oshirish va ishlab chiqishning soddaligi
- Foydalanish oson bo'lgan birlik sinov dasturlari
- TypeScript JavaScript-ning yuqori to'plami bo'lgan qattiq terilgan tildan foydalaniladi.
- Faol kodlar bazasini ishlab chiqish va saqlash.
- TypeORM, Mongoose, GraphQL, logging, validation, keshlash, WebSockets va boshqalar kabi mashhur texnologiyalar va g'oyalar bilan interfeysni osonlashtiradigan yuzlab uyaga xos modullarni qo'llab-quvvatlash.
NestJS ning qurilish bloklari nima?
Nest ilovalarining qurilish komponentlari quyida keltirilgan; boshqalar ham bor, lekin bu uchtasi eng muhimi. Keling, ularni tezda ko'rib chiqaylik.
1. Nazoratchilar
Nazoratchilar kiruvchi so'rovlarni qayta ishlash va mijozlarga javob berish uchun javobgardir. U maxsus HTTP so'rovlarini oladi va marshrutlash tizimi qaysi kontroller qaysi so'rovni olishini aniqlaydi.
Keyin yuborish uchun mos javob loyihasini ishlab chiqadi. Sinflar va dekorativlar yordamida oddiy kollektor quriladi va har bir kontroller turli vazifalarni bajarish uchun o'z marshrutlariga ega.
2. Provayderlar
Provayderlar Nest'dagi asosiy g'oyadir. Ko'pgina asosiy Nest sinflari - xizmatlar, omborlar, fabrikalar, yordamchilar va boshqalar - provayder sifatida ishlatilishi mumkin.
Provayderning asosiy tushunchasi shundaki, u qaramlik sifatida kiritilishi mumkin; bu ob'ektlar bir-biri bilan turli xil assotsiatsiyalar yaratishi mumkinligini anglatadi va ob'ektlarning namunalarini "ulash" roli asosan Nest ish vaqti tizimiga autsorsing bo'lishi mumkin.
3. Modullar
Modul - bu ilova strukturasining komponentlarini tartibga soluvchi @Module() dekoratoriga ega sinf. Har bir ilovada dastur grafigini yaratish uchun foydalaniladigan ildiz moduli mavjud bo'lib, u provayder va modul o'rtasidagi bog'liqlik va o'zaro ta'sirlarni yanada hal qiladi.
Ushbu dekorator ilova kodida qaysi komponentlar, kontrollerlar yoki boshqa resurslar ishlatilishini aniqlash va ularni bitta toʻplamga birlashtirish uchun Nest.js’ga metamaʼlumotlar beradi.
Har bir modul qandaydir tarzda bog'langan imkoniyatlar to'plamiga ega.
NestJS bilan ishlashni boshlash
1. o'rnatish
Keling, NestJS ni o'rnatamiz va u bilan quyidagi amallarni bajarib, loyiha yaratamiz:
Buning natijasida quyidagi katalog tuzilmasi yaratiladi:
2. Nazoratchilar
Nestning qurilish bloklari boshqaruvchilardir. Bular kiruvchi so'rovlar ko'rib chiqiladigan joylardir. Quyidagi kodda ko'rsatilganidek, HTTP usuli modifikatorlari (Get, Post, Put, Delete va boshqalar) dekoratorlari yordamida marshrut yo'lini belgilashingiz mumkin.
Nestjs dekorator yondashuvidan foydalanadi va asosan Typescript-da ishlab chiqilgan, garchi u JavaScript-ni ham qo'llab-quvvatlaydi. Bundan tashqari, so'rov tanasini tekshirish uchun sinf tekshiruvchisidan foydalanishingiz mumkin.
Men shunchaki Nestjs server namunasini yaratmoqchiman va global miqyosda ValidationPipe qo'shmoqchiman. Quvurlar - bu Kontrollerlardan oldin bajariladigan usullar. Quvurlar @UsePipes dekoratori yordamida usul/argument darajasida ham qo'llanilishi mumkin.
3. Provayderlar
Provayderlar Nestjs ning yana bir muhim komponentidir. Hozirgacha men ma'lumotlarni vaqtinchalik o'zgaruvchida saqladim. Shuning uchun bunday oddiy vazifani Controller ishlov beruvchilari yordamida bajarish mumkin.
Biroq, kattaroq, murakkabroq mantiq uchun kodni ajratish va qayta ishlatish qiyin bo'ladi. Bunda yetkazib beruvchilar keladi. Siz @Injectable dekoratoridan foydalanib, sinfning yuqori qismida provayderni e'lon qilishingiz/yararishingiz mumkin. Keyin, provayderlardan foydalanib, siz qaramlikni kiritish, jurnalga yozish va boshqa vazifalarni bajarishingiz mumkin.
4. Modullar
Nestjs modullari global emas; aksincha, ular chuqurlikka ega.
Biroq, uni boshqa har qanday modullar bilan ham baham ko'rish mumkin. Garchi u Angular kabi Global modullarni taklif qilsa-da, xizmatlar/nazoratchilarni Nestjs-da eng ko'p ishlatiladigan modulda saqlash tavsiya etiladi.
NestCLI ko'pincha modullarni ishlab chiqarish uchun ishlatiladi va ushbu modul kontekstida yaratilgan provayderlar/kontrollerlar CLI tomonidan avtomatik ravishda qo'shiladi. Ular xususiyat modullari sifatida tanilgan.
5. Istisno filtrlari
Istisno filtrlari - bu nazoratchi istisno qilganda chaqiriladigan xato ishlov beruvchilar. U muammoni avtomatik ravishda boshqaradi va tegishli, foydalanuvchi uchun qulay xato xabarini beradi.
Ko'pgina HttpException meros qilib olingan istisnolar @nestjs/common paketi tomonidan taqdim etiladi, jumladan NotFoundException, BadRequestException, NotAcceptableException, UnauthorizedException va boshqalar. Siz hatto o'zingizning ExceptionFilter-ni loyihalashingiz mumkin.
6. O'rta dastur
Marshrut ishlovchisidan oldin chaqiriladigan funksiya o'rta dastur deb ataladi. So'rov va javob ob'ektlari, shuningdek, ilovaning so'rov-javob siklidagi keyingi() o'rta dasturiy ta'minot funksiyasi o'rta dasturiy ta'minot funktsiyalari uchun ochiqdir.
Keyingi deb nomlangan o'zgaruvchi odatda keyingi o'rta dastur funktsiyasini aniqlash uchun ishlatiladi. Maxsus Nest o'rta ta'minoti @Injectable() dekoratoridan foydalangan holda usul yoki sinfda amalga oshirilishi mumkin.
7. Soqchilar
Soqchilar faqat bitta narsa uchun javobgardir. Muayyan holatlar (xususan, foydalanuvchi tomonidan belgilangan mantiq) asosida so'rov nazoratchi tomonidan ko'rib chiqiladimi yoki yo'qligini baholash ularning mas'uliyatidir.
Bu autentifikatsiya/avtorizatsiya uchun foydali va Nestjs-da tavsiya etilgan usul.
Garchi autentifikatsiya/ruxsatlar va hokazolar vositachi dastur yordamida amalga oshirilishi mumkin bo'lsa-da, bu ekspress yoki boshqa HTTP serverlarida amalga oshirilmaydi, chunki ular tegishli kuchli kontekstga ega emas va so'rovni qayta ishlash uchun qaysi usuldan foydalanishni bilish uchun hech qanday sabab yo'q.
afzalliklari
- Ramka asosan so'nggi nuqtalardan tortib Swagger hujjatlarigacha bo'lgan hamma narsani ishlab chiqarish uchun ishlatiladigan izohlarga bog'liq. Yakuniy nuqtalar oddiy va tartibli bo'lib, izohlar umuman rivojlanishni osonlashtiradi.
- Nest.js modulga asoslangan ramka bo‘lgani uchun umumiy maqsadli modullarni tashqariga chiqarish va kodni ko‘plab loyihalarda qayta ishlatish juda oson.
- Nest.js papkasining tuzilishiga Angular sezilarli darajada ta'sir qiladi. Nest xizmatini loyihalashda bu minimal ishlamay qolish imkonini beradi.
- Komponentlar o'z kataloglariga ega, ildizda dastur moduli va asosiy fayl mavjud. Tuzilishning soddaligi tufayli dastur tuzilishiga emas, balki oxirgi nuqtalar va ularning mijozlari dizayniga ko'proq e'tibor qaratish mumkin.
- Nest, Angular singari, Node Package Manager orqali mavjud bo'lgan Nestjs/cli buyruqlar qatori vositasini taklif qiladi.
Kamchiliklari
- Nest TypeScript-dan foydalanish va Angular integratsiyasi nuqtai nazaridan afzalliklarga ega, ammo u yirik korporatsiyaning moliyaviy yordamiga ega emas.
- Hujjatlarning etishmasligi Nest foydalanuvchilari uchun eng katta xavf tug'diradi. Garchi ramka boshqa ramkalar bilan mukammal o'zaro ta'sirga ega bo'lsa-da, hujjatlar siyrak va hech qanday mumkin bo'lgan qiyinchiliklarni bartaraf etmaydi.
- Nest TypeScript-dan foydalanish va Angular jihatidan afzalliklarga ega.
Xulosa
NestJS dasturchilarga katta imkoniyatlarni taqdim etadi. Rivojlanishni boshlash uchun siz qilishingiz kerak bo'lgan yagona narsa yangi ilova yarating va ketishingiz yaxshi. Ushbu ramka darhol sezilarli o'sishni ta'minlaydi, shu bilan birga tegishli ilova arxitekturasini o'rnatish orqali qo'shimcha bosqichlardan o'tishda sizga yordam beradi.
U boshqariladigan va uzoq muddatli ilovalarni ishlab chiqarish uchun ilg'or usullar va texnologiyalardan foydalanadi. U GraphQL, WebSockets-ga ulanish va mikroservislarni qurish uchun ishlatilishi mumkin.
Leave a Reply