Дар соли 2021, JavaScript забони васеъ истифодашавандаи барномасозӣ буд.
Ҷолибияти ин технология инкорнопазир аст, зеро шумораи зиёди чаҳорчӯбаҳое, ки барномасозии JavaScript-ро имкон медиҳанд, дида мешавад.
Дар пештара Angular, React ва Vue, инчунин Express ва Next дар пушти сар мавҷуданд, ки чанде аз онҳоро зикр кунем.
Бо ин қадар чаҳорчӯбаҳои олиҷаноб барои барномасозии пуштибони дар JavaScript дастрас, шумо шояд фикр кунед, ки чаро ман чизи дигареро ҷустуҷӯ мекунам, на танҳо истифодаи Express ё Next.
Эҳтимол, ба шумо лозим аст, ки раванди таҳияро бо як пластинкаи муносиб зуд оғоз кунед ва ба таври дастӣ на танҳо контроллерҳои нав, балки хидматҳо низ шуморо бемор мекунад.
Ё шумо мехоҳед нармафзори калон ва миқёспазир эҷод кунед, ки идорааш осон аст. Ё шояд шумо танҳо мехоҳед, ки ба таври муассиртар ва қулайтар кор кунед.
Новобаста аз он ки кадоме аз он дар шароити шумо дуруст аст, Nest.js метавонад барои эҳтиёҷоти шумо ҳалли комил бошад.
Ин паём фаҳмишҳои NestJS ва инчунин таҷрибаи амалиро пешкаш мекунад.
NestJS чист?
NestJS чаҳорчӯбаи прогрессивии Node мебошад, ки сарчашмаи кушода, васеъшаванда ва мутобиқшаванда аст .Js чаҳорчӯба барои сохтан, ҷалб кардан ва душвор кардани системаҳои пуштибонӣ. Ҳоло он гиреҳ бо суръати баландтарини афзоиш аст.
Чаҳорчӯбаи 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 аутсорсинг додан мумкин аст.
3. Модулҳо
Модул синфест бо ороишгари @Module(), ки ҷузъҳои сохтори барномаро ташкил мекунад. Ҳар як барнома як модули реша дорад, ки барои сохтани графики барнома истифода мешавад, ки минбаъд вобастагӣ ва ҳамкории байни провайдер ва модулро ҳал мекунад.
Ин ороишгар ба Nest.js метамаълумот медиҳад, то муайян кунад, ки кадом ҷузъҳо, контроллерҳо ё захираҳои дигар дар коди барнома истифода мешаванд ва онҳоро дар як маҷмӯа муттаҳид мекунанд.
Ҳар як модул дорои маҷмӯи қобилиятҳое мебошад, ки бо ягон роҳ пайвастанд.
Оғози кор бо NestJS
1. насби
Биёед NestJS-ро насб кунем ва бо ин амалҳо бо он лоиҳа созем:
Дар натиҷаи ин сохтори феҳристи зерин сохта мешавад:
2. Назоратчиён
Блокҳои сохтмонии Nest контроллерҳо мебошанд. Инҳо ҷойҳое ҳастанд, ки дархостҳои воридотӣ баррасӣ карда мешаванд. Шумо метавонед роҳи масирро бо истифода аз тағирдиҳандаҳои усули HTTP (Get, Post, Put, Delete ва ғайра) ороишгарон, тавре ки дар коди зер дида мешавад, муайян кунед.
Nestjs равиши ороишгариро истифода мебарад ва асосан дар Typescript таҳия шудааст, гарчанде ки он JavaScript-ро низ дастгирӣ мекунад. Шумо инчунин метавонед як валидатори синфро барои тасдиқи мақоми дархост истифода баред.
Ман танҳо як мисоли сервери Nestjs эҷод мекунам ва ValidationPipe-ро дар саросари ҷаҳон илова мекунам. Қубурҳо танҳо усулҳое мебошанд, ки пеш аз контроллерҳо иҷро мешаванд. Қубурҳоро инчунин дар сатҳи усул/аргумент бо истифода аз ороишгари @UsePipes истифода бурдан мумкин аст.
3. Таъминкунандагон
Провайдерҳо ҷузъи дигари муҳими Nestjs мебошанд. То ба ҳол ман маълумотро дар як тағирёбандаи муваққатӣ нигоҳ доштам. Аз ин рӯ, чунин як вазифаи оддиро метавон тавассути коркардкунандагони Controller иҷро кард.
Аммо, барои мантиқи калонтар ва мураккабтар, ҷудо кардани код ва истифодаи дубора душвор хоҳад буд. Ин вақтест, ки таъминкунандагон ворид мешаванд. Шумо метавонед бо истифода аз ороишгари @Injectable провайдерро дар болои синф эълон/эҷод кунед. Сипас, бо истифода аз провайдерҳо, шумо метавонед тазриқи вобастагӣ, сабти ном ва дигар вазифаҳоро иҷро кунед.
4. Модулҳо
Модулҳои Nestjs глобалӣ нестанд; ба ҷои ин, онҳо амиқ доранд.
Бо вуҷуди ин, он метавонад бо ҳама гуна модулҳои дигар мубодила карда шавад. Гарчанде ки он, ба монанди Angular, Модулҳои Глобиро пешниҳод мекунад, беҳтар аст, ки хидматҳо/назоратчиёнро дар модуле, ки онҳо дар Nestjs бештар истифода мешаванд, нигоҳ доред.
NestCLI аксар вақт барои истеҳсоли модулҳо истифода мешавад ва провайдерҳо/назоратчиёне, ки дар контексти ин модул тавлид шудаанд, аз ҷониби CLI ба таври худкор илова карда мешаванд. Инҳо ҳамчун модулҳои хусусият маълуманд.
5. Филтрҳои истисноӣ
Филтрҳои истисноӣ коркардкунандагони хатогиҳо мебошанд, ки ҳангоми баровардани Назоратчӣ истисно истифода мешаванд. Он ба таври худкор масъаларо идора мекунад ва паёми хатогии мувофиқ ва барои корбарро осон мерасонад.
Бисёр истисноҳои меросии HttpException аз ҷониби бастаи @nestjs/common таъмин карда мешаванд, аз ҷумла NotFoundException, BadRequestException, NotAcceptableException, UnauthorizedException ва бисёр дигарон. Шумо ҳатто метавонед ExceptionFilter-и худро тарроҳӣ кунед.
6. Миёнаравӣ
Функсияе, ки пеш аз коркарди масир даъват карда мешавад, миёнаравӣ номида мешавад. Объектҳои дархост ва посух, инчунин функсияи миёнаравии навбатӣ () дар даври дархост-ҷавоби барнома, ба функсияҳои миёнаравӣ дастрасанд.
Тағирёбандае, ки навбатӣ номида мешавад, маъмулан барои муайян кардани вазифаи навбатии миёнаравӣ истифода мешавад. Миёнаравӣ фармоишии Nest метавонад дар як метод ё синф бо истифода аз ороишгари @Injectable() амалӣ карда шавад.
7. Гвардиячиён
Посбонҳо танҳо барои як чиз масъуланд. Масъулияти онҳо барои муайян кардани он аст, ки дархост аз ҷониби контроллер дар асоси ҳолатҳои мушаххас коркард мешавад ё не (махсусан, мантиқи аз ҷониби корбар муайяншуда).
Он барои тасдиқ/авторизатсия муфид аст ва усули тавсияшуда дар Nestjs мебошад.
Гарчанде, ки аутентификатсия/иҷозатҳо ва ғайраро бо истифода аз миёнаравӣ анҷом додан мумкин аст, он дар серверҳои экспресс ё дигар HTTP анҷом дода намешавад, зеро онҳо контексти қавӣ надоранд ва барои донистани кадом усул барои коркарди дархост ягон асос надоранд.
афзалиятҳо
- Чаҳорчӯба ба таври ҷиддӣ ба эзоҳҳо такя мекунад, ки барои тавлиди ҳама чиз аз нуқтаҳои ниҳоӣ то ҳуҷҷатҳои Swagger истифода мешаванд. Нуқтаҳои ниҳоӣ асосӣ ва озоданд ва эзоҳҳо таҳияро дар маҷмӯъ осонтар мекунанд.
- Модулҳои таъиноти умумӣ берунӣ ва дубора истифода бурдани код дар бисёр лоиҳаҳо осон аст, зеро Nest.js чаҳорчӯбаи ба модул асосёфта аст.
- Сохтори папкаи Nest.js аз ҷониби Angular ба таври назаррас таъсир мерасонад. Ҳангоми тарҳрезии хидмати Nest, ин имкон медиҳад, ки вақти ҳадди ақали бекорист.
- Компонентҳо директорияҳои худро доранд, ки реша дорои модули барнома ва файли асосӣ мебошад. Аз сабаби содда будани сохтор, на ба сохтори барнома, ба тарҳрезии нуқтаҳо ва муштариёни онҳо бештар таваҷҷӯҳ кардан мумкин аст.
- Nest, ба монанди Angular, як асбоби хуби сатри фармонро пешниҳод мекунад, Nestjs/cli, ки тавассути Node Package Manager дастрас аст.
нуқсонҳои
- Nest аз нигоҳи истифодаи TypeScript ва ҳамгироии кунҷӣ бартарӣ дорад, аммо аз дастгирии молиявии як корпоратсияи азим маҳрум аст.
- Набудани ҳуҷҷатҳо барои корбарони Nest бузургтарин таҳдидро ба бор меорад. Гарчанде ки чаҳорчӯба бо чаҳорчӯбаҳои дигар ҳамкории аъло дорад, ҳуҷҷатҳо каманд ва ҳеҷ гуна мушкилоти эҳтимолиро ҳал намекунад.
- Nest аз ҷиҳати истифодаи TypeScript ва Angular бартарӣ дорад.
хулоса
NestJS ба таҳиягарон имкони баланд медиҳад. Барои оғози рушд, шумо танҳо бояд кор кунед як барномаи нав эҷод кунед ва шумо барои рафтан хуб ҳастед. Ин чаҳорчӯба якбора афзоиши назаррасро таъмин мекунад ва ҳамзамон ба шумо дар гирифтани марҳилаҳои иловагӣ тавассути таъсиси меъмории мувофиқи барнома кӯмак мекунад.
Он усулҳо ва технологияҳои пешрафтаро барои истеҳсоли барномаҳое истифода мебарад, ки ҳам идорашаванда ва ҳам дарозмуддат мебошанд. Он метавонад барои пайвастшавӣ ба GraphQL, WebSockets ва сохтани микросервисҳо истифода шавад.
Дин ва мазҳаб