Yn 2021 wie JavaScript de meast brûkte programmeartaal.
It berop fan dizze technology is ûnbestriden, lykas sjoen troch it grutte oantal kaders dy't JavaScript-programmearring ynskeakelje.
D'r binne Angular, React en Vue op 'e frontend, lykas Express en Next op' e efterkant, om in pear te neamen.
Mei safolle prachtige kaders foar backend-programmearring yn JavaScript tagonklik, tinke jo miskien wêrom ik nei wat oars soe sykje ynstee fan gewoan Express of Folgjende te brûken.
Miskien moatte jo it ûntwikkelingsproses fluch begjinne mei in fatsoenlike boilerplate, en it manuell tafoegjen fan net allinich nije controllers, mar ek tsjinsten makket jo siik.
Of jo wolle grutte, skaalbere software meitsje dy't ienfâldich te behearjen is. Of miskien wolle jo gewoan op in effisjinter en handiger manier wurkje.
Nettsjinsteande wat wier is yn jo omstannichheden, Nest.js kin de perfekte oplossing wêze foar jo behoeften.
Dizze post sil NestJS-ynsjoch leverje as praktyske ûnderfining.
Wat is NestJS?
NestJS is in progressive knooppuntkader dat iepen boarne, útwreidber en oanpasber is .Js ramt foar it bouwen, ynnimmen en útdaagjen fan backendsystemen. It is no de knooppunt mei it rapste groeitempo.
TypeScript-ramt foar js. NestJS wurdt brûkt om applikaasjes te meitsjen dy't skalberber, testber en los ferbûn binne.
It foeget skalberens ta oan Node. Js-tsjinners binne nei in folslein nij nivo nommen. PostgreSQL, MongoDB, en MySQL binne ûnder de stipe databases.
NestJS is útwreidber omdat it kin wurde brûkt mei oare bibleteken; fleksibel fanwege syn oanpasbere folweardige ekosysteem. En foarútstribjend, om't it JavaScript-funksjes en ûntwerpprinsipes stipet.
It wurdt primêr beynfloede troch Angular, React, en Vue en komt mei ynboude ôfhinklikensynjeksje.
Features
- It is ienfâldich te brûken, te learen en te behearskjen.
- It is fergees en iepen-boarne (MIT lisinsje)
- Krêftige Command Line Interface (CLI) foar ferhege produktiviteit en ienfâld fan ûntwikkeling
- Ienheidstestprogramma's dy't ienfâldich binne te brûken
- TypeScript, in strak typte taal dy't in superset fan JavaScript is, wurdt brûkt.
- Untwikkeling en ûnderhâld fan in aktive codebase.
- Stipe foar hûnderten nêst-spesifike modules dy't it maklik meitsje om te ynterface mei populêre technologyen en ideeën lykas TypeORM, Mongoose, GraphQL, logging, falidaasje, caching, WebSockets, en mear.
Wat binne de boustiennen fan NestJS?
De boukomponinten fan Nest-applikaasjes wurde hjirûnder neamd; der binne oaren, mar dizze trije binne de meast wichtige. Litte wy se gau sjen.
1. Controllers
Controllers binne ferantwurdlik foar it ferwurkjen fan ynkommende oanfragen en reagearje op kliïnten. It ûntfangt bepaalde HTTP-oanfragen, en it routingsysteem bepaalt hokker controller hokker fersyk krijt.
It stelt dan in passend antwurd op om út te stjoeren. Mei help fan klassen en dekorateurs wurdt in ienfâldige samler boud en elke controller hat syn eigen set fan rûtes foar it dwaan fan ferskate taken.
2. Oanbieders
Oanbieders binne in wichtich idee yn Nest. In protte fan 'e kearn Nest-klassen - tsjinsten, repositories, fabriken, helpers, ensafuorthinne - kinne wurde behannele as providers.
It basisbegryp fan in provider is dat it kin wurde ynjeksje as ôfhinklikens; dit hâldt yn dat objekten ferskate assosjaasjes mei-inoar foarmje kinne, en de rol fan 'bedrading' fan eksimplaren fan objekten kin benammen útbestege wurde oan it Nest-runtime-systeem.
3. Module
In module is in klasse mei de @Module () decorator dy't organisearret de komponinten fan de applikaasje syn struktuer. Elke applikaasje hat in root-module dy't brûkt wurdt om de applikaasjegrafyk te konstruearjen, dy't de ôfhinklikens en ynteraksjes tusken de provider en de module fierder oplost.
Dizze dekorator jout metadata oan Nest.js om te identifisearjen hokker komponinten, controllers of oare boarnen sille wurde brûkt yn 'e applikaasjekoade en kombinearje se yn ien set.
Elke module hat in samling mooglikheden dy't op ien of oare manier ferbûn binne.
Te begjinnen mei NestJS
1. Ynstallaasje
Litte wy NestJS ynstallearje en dermei in projekt meitsje troch dizze stappen te folgjen:
De folgjende mapstruktuer sil wurde makke as gefolch fan dit:
2. Controllers
De boustiennen fan it Nest binne kontrôlers. Dit binne de lokaasjes dêr't ynkommende oanfragen wurde behannele. Jo kinne oantsjutte de rûte paad mei help HTTP metoade modifiers (Get, Post, Put, wiskje, ensafuorthinne) decorators, lykas sjoen yn de koade hjirûnder.
Nestjs brûkt de oanpak fan dekoraasje en wurdt meast ûntwikkele yn Typescript, hoewol it ek JavaScript stipet. Jo kinne ek in klasse validator brûke om it fersyklichem te falidearjen.
Ik sil gewoan in Nestjs-tsjinner eksimplaar meitsje en ValidationPipe globaal taheakje. Pipes binne gewoan metoaden dy't útfiere foar Controllers. Pipes kinne ek tapast wurde op it metoade / argumintnivo mei de @UsePipes-dekorator.
3. Oanbieders
Oanbieders binne in oare krityske komponint fan Nestjs. Fierwei bewarre ik gegevens yn in tydlike fariabele. Dat is wêrom sa'n ienfâldige taak kin wurde folbrocht mei help fan Controller handlers.
Foar gruttere, komplisearre logika soe koadeskieding en wergebrûk lykwols lestich wêze. Dit is doe't leveransiers komme yn. Jo kinne ferklearje / meitsje in provider boppe op in klasse mei help fan de @Injectable decorator. Dan, mei help fan providers, kinne jo dwaan ôfhinklikens ynjeksje, logging, en oare taken.
4. Module
Nestjs modules binne net globale; ynstee, se hawwe djipte.
It kin lykwols ek dield wurde mei alle oare modules. Hoewol it, lykas Angular, Global Modules biedt, is it oan te rieden om Tsjinsten / Controllers te hâlden yn 'e module wêr't se it meast brûkt wurde yn Nestjs.
De NestCLI wurdt meastentiids brûkt om modules te produsearjen, en providers/controllers generearre yn de kontekst fan dy module wurde automatysk tafoege troch de CLI. Dizze wurde bekend as funksje-modules.
5. Útsûndering Filters
Útsûnderingsfilters binne flaterhannelers dy't wurde oproppen as in Controller in útsûndering smyt. It beheart it probleem automatysk en leveret in passend, brûkerfreonlik flaterberjocht.
In protte HttpException erfde útsûnderings wurde levere troch it pakket @nestjs/common, ynklusyf NotFoundException, BadRequestException, NotAcceptableException, UnauthorizedException, en in protte oaren. Jo kinne sels jo eigen ExceptionFilter ûntwerpe.
6. Middleware
In funksje dy't oproppen wurdt foar de rûtebehanneling wurdt middleware neamd. De fersyk- en antwurdobjekten, lykas de folgjende () middleware-funksje yn 'e oanfraach-antwurd-syklus fan' e applikaasje, binne tagonklik foar middleware-funksjes.
In fariabele neamd folgjende wurdt typysk brûkt om de folgjende middleware-funksje te identifisearjen. Oanpaste Nest-middleware kin wurde ymplementearre yn in metoade of in klasse mei help fan de @Injectable () decorator.
7. Wachters
Guards binne mar ferantwurdlik foar ien ding. It is har ferantwurdlikens om te beoardieljen oft in fersyk sil wurde ferwurke troch de controller basearre op spesifike omstannichheden (spesifyk, troch de brûker definieare logika).
It is nuttich foar autentikaasje / autorisaasje en is de oanrikkemandearre metoade yn Nestjs.
Hoewol autentikaasje / tagongsrjochten, ensfh., kin dien wurde mei middleware, it wurdt net dien yn ekspresje as oare HTTP-tsjinners, om't se gjin relatearre sterke kontekst hawwe en gjin reden hawwe om te witten hokker metoade sil wurde brûkt om it fersyk te ferwurkjen.
foardielen
- It ramt is sterk ôfhinklik fan annotaasjes, dy't wurde brûkt om alles te produsearjen fan einpunten oant Swagger-dokumintaasje. De einpunten binne basis en netjes, en de annotaasjes meitsje ûntwikkeling yn it algemien makliker.
- It is ienfâldich om modules foar algemiene doelen te eksternalisearjen en koade opnij te brûken yn in protte projekten, om't Nest.js in module-basearre ramt is.
- De mapstruktuer fan Nest.js wurdt signifikant beynfloede troch Angular. By it ûntwerpen fan in Nest-tsjinst soarget dit foar minimale downtime.
- Komponinten hawwe har eigen mappen, mei de root mei de applikaasjemodule en haadbestân. Fanwegen de ienfâld fan 'e struktuer kin mear omtinken wurde brocht oan it ûntwerp fan einpunten en har klanten ynstee fan de struktuer fan 'e applikaasje.
- Nest, lykas Angular, biedt in moai kommando-rigelark, Nestjs/cli, dat beskikber is fia Node Package Manager.
neidielen
- Nest hat in foardiel yn termen fan TypeScript-gebrûk en Angular-yntegraasje, mar it mist de finansjele stipe fan in enoarme korporaasje.
- It gebrek oan dokumintaasje foarmet de grutste bedriging foar Nest-brûkers. Hoewol it ramt poerbêste ynteraksjes hat mei oare kaders, is de dokumintaasje sparse en behannelet gjin potinsjele swierrichheden.
- Nest hat in foardiel yn termen fan TypeScript-gebrûk en Angular.
Konklúzje
NestJS biedt ûntwikkelders in enoarme skonk omheech. Om ûntwikkeling te begjinnen, is alles wat jo hoege te dwaan meitsje in nije app en do bist goed om te gean. Dit ramt leveret direkt in wichtige ympuls, wylst jo jo ek helpe by it nimmen fan ekstra stadia troch it fêststellen fan in geskikte app-arsjitektuer.
It makket gebrûk fan avansearre metoaden en technology om applikaasjes te produsearjen dy't sawol behearlik as lang duorje. It kin brûkt wurde om te ferbinen mei GraphQL, WebSockets, en mikrotsjinsten te bouwen.
Leave a Reply