Fl-2021, JavaScript kien il-lingwa ta' programmar l-aktar użata.
L-appell ta 'din it-teknoloġija huwa innegabbli, kif jidher min-numru kbir ta' oqfsa li jippermettu l-ipprogrammar JavaScript.
Hemm Angular, React, u Vue fuq il-frontend, kif ukoll Express u Next fuq il-backend, biex insemmu xi ftit.
B'daqstant oqfsa mill-isbaħ għall-ipprogrammar backend f'JavaScript aċċessibbli, tista 'taħseb għaliex infittex xi ħaġa differenti aktar milli sempliċement nuża Express jew Next.
Forsi għandek bżonn tibda l-proċess ta 'żvilupp malajr b'boilerplate deċenti, u żżid manwalment mhux biss kontrolluri ġodda iżda wkoll servizzi timrad.
Jew trid toħloq softwer kbir u skalabbli li huwa sempliċi biex jimmaniġġja. Jew forsi sempliċement tixtieq taħdem b'mod aktar effiċjenti u konvenjenti.
Irrispettivament minn liema huwa veru fiċ-ċirkustanza tiegħek, Nest.js jista 'jkun is-soluzzjoni perfetta għall-bżonnijiet tiegħek.
Din il-kariga se tipprovdi għarfien dwar NestJS kif ukoll esperjenza prattika.
X'inhu NestJS?
NestJS huwa qafas Node progressiv li huwa open-source, espansibbli u adattabbli .Js qafas għall-bini, l-ingaġġ u l-isfida ta’ sistemi backend. Issa huwa n-Node bl-iktar rata ta 'tkabbir mgħaġġla.
Qafas TypeScript għal js. NestJS jintuża biex jinħolqu applikazzjonijiet li huma skalabbli, ttestjati, u konnessi b'mod laxk.
Hija żżid iskalabbiltà għal Node. Is-servers Js ittieħdu għal livell ġdid sħiħ. PostgreSQL, MongoDB, u MySQL huma fost id-databases appoġġjati.
NestJS huwa estendibbli minħabba li jista 'jintuża ma' libreriji oħra; flessibbli minħabba l-ekosistema adattabbli kollha tagħha. U progressiva peress li tappoġġja l-karatteristiċi u l-prinċipji tad-disinn JavaScript.
Huwa influwenzat primarjament minn Angular, React, u Vue u jiġi b'injezzjoni ta 'dipendenza integrata.
Karatteristiċi
- Huwa sempliċi biex tużah, titgħallem u tgħallem.
- Huwa b'xejn u open-source (liċenzja MIT)
- Interface qawwija tal-Linja tal-Kmand (CLI) għal żieda fil-produttività u sempliċità tal-iżvilupp
- Programmi ta' ttestjar ta' unità li huma sempliċi biex jintużaw
- Tintuża TypeScript, lingwa ittajpjata sewwa li hija superset ta' JavaScript.
- Żvilupp u manutenzjoni ta' bażi ta' kodiċi attiva.
- Appoġġ għal mijiet ta 'moduli speċifiċi għall-bejta li jagħmluha sempliċi biex tgħaqqad ma' teknoloġiji u ideat popolari bħal TypeORM, Mongoose, GraphQL, logging, validazzjoni, caching, WebSockets, u aktar.
X'inhuma l-blokki tal-bini ta' NestJS?
Il-komponenti tal-bini tal-applikazzjonijiet Nest huma elenkati hawn taħt; hemm oħrajn, iżda dawn it-tlieta huma l-aktar sinifikanti. Ejja nagħtu ħarsa lejhom malajr.
1. Kontrolluri
Il-kontrolluri huma inkarigati mill-ipproċessar tat-talbiet li jkunu deħlin u li jwieġbu lill-klijenti. Jirċievi talbiet HTTP partikolari, u s-sistema tar-rotot tiddetermina liema kontrollur jieħu liema talba.
Imbagħad tfassal tweġiba xierqa biex tibgħat. Bl-għajnuna ta 'klassijiet u dekoraturi, kollettur sempliċi jinbena u kull kontrollur għandu s-sett ta' rotot tiegħu stess biex jagħmel diversi kompiti.
2. Fornituri
Il-fornituri huma idea ewlenija f'Nest. Ħafna mill-klassijiet ewlenin Nest — servizzi, repożitorji, fabbriki, helpers, eċċ — jistgħu jiġu ttrattati bħala fornituri.
Il-kunċett bażiku ta' fornitur huwa li jista' jiġi injettat bħala dipendenza; dan jimplika li l-oġġetti jistgħu jiffurmaw assoċjazzjonijiet varji ma 'xulxin, u r-rwol ta' każijiet ta '"wiring up" ta' oġġetti jista 'jiġi esternalizzat prinċipalment lis-sistema runtime Nest.
3. Moduli
Modulu huwa klassi bid-dekoratur @Module() li jorganizza l-komponenti tal-istruttura tal-applikazzjoni. Kull applikazzjoni għandha modulu għerq li huwa utilizzat biex jinbena l-graff tal-applikazzjoni, li jkompli jsolvi d-dipendenzi u l-interazzjonijiet bejn il-fornitur u l-modulu.
Dan id-dekoratur jagħti metadejta lil Nest.js sabiex jidentifika liema komponenti, kontrolluri, jew riżorsi oħra se jiġu utilizzati fil-kodiċi tal-applikazzjoni u jgħaqqduhom f'sett wieħed.
Kull modulu għandu ġabra ta 'kapaċitajiet li huma konnessi b'xi mod.
Nibdew b'NestJS
1. installazzjoni
Ejja ninstallaw NestJS u nagħmlu proġett miegħu billi nsegwu dawn il-passi:
L-istruttura tad-direttorju li ġejja se tinħoloq bħala riżultat ta 'dan:
2. Kontrolluri
Il-blokki tal-bini tal-Nest huma kontrolluri. Dawn huma l-postijiet fejn it-talbiet deħlin se jiġu ttrattati. Tista 'tispeċifika l-mogħdija tar-rotta billi tuża modifikaturi tal-metodu HTTP (Get, Post, Put, Delete, eċċ) dekoraturi, kif jidher fil-kodiċi hawn taħt.
Nestjs juża l-approċċ tad-dekoratur u huwa żviluppat l-aktar bit-Typescript, għalkemm jappoġġja wkoll JavaScript. Tista' wkoll tuża validatur tal-klassi biex tivvalida l-korp tat-talba.
Jien se nagħmel istanza ta' server Nestjs u nżid ValidationPipe globalment. Il-pajpijiet huma biss metodi li jeżegwixxu qabel il-Kontrolluri. Il-pajpijiet jistgħu jiġu applikati wkoll fil-livell tal-metodu/argument bl-użu tad-dekoratur @UsePipes.
3. Fornituri
Il-fornituri huma komponent kritiku ieħor ta 'Nestjs. Sa issa, kont qed naħżen id-dejta f'varjabbli temporanju. Huwa għalhekk li kompitu sempliċi bħal dan jista 'jitwettaq bl-użu ta' handlers tal-Kontrollur.
Madankollu, għal loġika akbar u aktar ikkumplikata, is-separazzjoni u l-użu mill-ġdid tal-kodiċi jkunu diffiċli. Dan huwa meta jidħlu l-fornituri. Tista 'tiddikjara/toħloq fornitur fuq nett ta' klassi billi tuża d-dekoratur @Injectable. Imbagħad, billi tuża fornituri, tista 'tagħmel injezzjoni ta' dipendenza, illoggjar, u kompiti oħra.
4. Moduli
Il-moduli Nestjs mhumiex globali; minflok, għandhom fond.
Madankollu, jista 'jinqasam ma' kwalunkwe moduli oħra wkoll. Għalkemm, bħal Angular, joffri Moduli Globali, huwa aktar rakkomandabbli li żżomm Servizzi/Kontrolluri fil-modulu fejn jintużaw l-aktar f'Nestjs.
In-NestCLI jintuża biex jipproduċi moduli l-biċċa l-kbira tal-ħin, u l-fornituri/kontrolluri ġġenerati fil-kuntest ta' dak il-modulu jiġu miżjuda awtomatikament mis-CLI. Dawn huma magħrufa bħala moduli tal-karatteristiċi.
5. Filtri ta 'Eċċezzjoni
Il-filtri ta' l-eċċezzjoni huma l-immaniġġjar ta' l-iżbalji li jiġu invokati meta Kontrollur jitfa' eċċezzjoni. Tiġġestixxi awtomatikament il-kwistjoni u tagħti messaġġ ta 'żball xieraq u faċli għall-utent.
Ħafna Eċċezzjonijiet HttpException wirtu huma pprovduti mill-pakkett @nestjs/common, inklużi NotFoundException, BadRequestException, NotAcceptableException, UnauthorizedException, u ħafna oħrajn. Tista 'anki tiddisinja l-ExceptionFilter tiegħek stess.
6. Middleware
Funzjoni li tiġi invokata qabel ir-route handler tissejjaħ middleware. L-oġġetti tat-talba u r-rispons, kif ukoll il-funzjoni tal-middleware next() fiċ-ċiklu ta' talba-rispons tal-applikazzjoni, huma aċċessibbli għall-funzjonijiet tal-middleware.
Varjabbli msejjaħ li jmiss huwa tipikament użat biex jidentifika l-funzjoni middleware li jmiss. Il-middleware Custom Nest jista' jiġi implimentat f'metodu jew klassi bl-użu tad-dekoratur @Injectable().
7. Gwardjani
Il-gwardjani huma responsabbli biss għal ħaġa waħda. Hija r-responsabbiltà tagħhom li jivvalutaw jekk talba tkunx ipproċessata jew le mill-kontrollur abbażi ta' ċirkostanzi speċifiċi (Speċifikament, loġika ddefinita mill-utent).
Huwa utli għall-awtentikazzjoni/awtorizzazzjoni u huwa l-metodu rakkomandat f'Nestjs.
Għalkemm l-awtentikazzjoni/permessi, eċċ., jistgħu jsiru bl-użu ta' middleware, dan ma jsirx f'servers express jew HTTP oħra peress li m'għandhomx kuntest b'saħħtu relatat u m'għandhom l-ebda raġuni biex ikunu jafu liema metodu se jintuża biex jipproċessa t-talba.
vantaġġi
- Il-qafas jiddependi ħafna fuq annotazzjonijiet, li jintużaw biex jipproduċu xi ħaġa minn endpoints sa dokumentazzjoni Swagger. L-endpoints huma bażiċi u puliti, u l-annotazzjonijiet jagħmlu l-iżvilupp aktar faċli b'mod ġenerali.
- Huwa sempliċi li esternalizza moduli għal skopijiet ġenerali u tuża mill-ġdid il-kodiċi f'ħafna proġetti peress li Nest.js huwa qafas ibbażat fuq moduli.
- L-istruttura tal-folders ta' Nest.js hija influwenzata b'mod sinifikanti minn Angular. Meta tfassal servizz Nest, dan jippermetti ħin ta' waqfien minimu.
- Il-komponenti għandhom direttorji tagħhom stess, bl-għerq ikun fih il-modulu tal-applikazzjoni u l-fajl prinċipali. Minħabba s-sempliċità tal-istruttura, tista 'tingħata aktar attenzjoni għad-disinn tal-punti finali u l-klijenti tagħhom aktar milli l-istruttura tal-applikazzjoni.
- Nest, bħal Angular, joffri għodda sabiħa tal-linja tal-kmand, Nestjs/cli, li hija disponibbli permezz ta 'Node Package Manager.
Żvantaġġi
- Nest għandha vantaġġ f'termini ta 'użu ta' TypeScript u integrazzjoni Angolari, iżda hija nieqsa mill-appoġġ finanzjarju ta 'korporazzjoni enormi.
- In-nuqqas ta' dokumentazzjoni joħloq l-akbar theddida għall-utenti ta' Nest. Għalkemm il-qafas għandu interazzjonijiet eċċellenti ma' oqfsa oħra, id-dokumentazzjoni hija skarsa u ma tindirizza l-ebda diffikultajiet potenzjali.
- Nest għandu vantaġġ f'termini ta 'użu ta' TypeScript u Angular.
konklużjoni
NestJS jipprovdi lill-iżviluppaturi b'mod kbir. Biex tibda l-iżvilupp, kull ma trid tagħmel hu toħloq app ġdida u int tajjeb biex tmur. Dan il-qafas jipprovdi spinta sinifikanti mill-ewwel, filwaqt li jgħinek ukoll biex tieħu stadji addizzjonali billi tistabbilixxi arkitettura tal-app xierqa.
Jagħmel użu minn metodi u teknoloġija avvanzata biex jipproduċi applikazzjonijiet li huma kemm maniġġabbli kif ukoll fit-tul. Jista 'jintuża biex jgħaqqad ma' GraphQL, WebSockets, u jinbena mikroservizzi.
Ħalli Irrispondi