Sa 2021, ang JavaScript mao ang labing kaylap nga gigamit nga programming language.
Ang pag-apelar sa kini nga teknolohiya dili ikalimod, ingon sa nakita sa daghang mga frameworks nga makahimo sa JavaScript programming.
Adunay Angular, React, ug Vue sa frontend, ingon man ang Express ug Next sa backend, sa paghisgot sa pipila.
Uban sa daghan kaayong nindot nga mga frameworks alang sa backend programming sa JavaScript nga ma-access, tingali maghunahuna ka nganong mangita kog lahi kay sa paggamit lang sa Express o Next.
Tingali kinahanglan nimo nga sugdan dayon ang proseso sa pag-uswag gamit ang usa ka desente nga boilerplate, ug ang mano-mano nga pagdugang dili lamang mga bag-ong controller apan ang mga serbisyo usab makapasakit kanimo.
O gusto nimo nga maghimo og dako, scalable nga software nga yano nga pagdumala. O tingali gusto nimo nga magtrabaho sa mas episyente ug kombenyente nga paagi.
Bisan unsa ang tinuod sa imong kahimtang, ang Nest.js mahimong perpekto nga solusyon alang sa imong mga panginahanglan.
Kini nga post maghatag ug mga insight sa NestJS ingon man mga hands-on nga kasinatian.
Unsa ang NestJS?
NestJS maoy usa ka progresibong balangkas sa Node nga bukas nga tinubdan, mapalapdan, ug mapahiangay .Js balangkas alang sa pagtukod, pag-apil ug paghagit sa mga sistema sa backend. Kini karon ang Node nga adunay labing paspas nga rate sa pagtubo.
TypeScript framework para sa js. Gigamit ang NestJS sa paghimo og mga aplikasyon nga masukod, masulayan, ug dili kaayo konektado.
Nagdugang kini og scalability sa Node. Ang mga server sa Js gidala sa usa ka bag-ong lebel. Ang PostgreSQL, MongoDB, ug MySQL usa sa mga gisuportahan nga database.
Ang NestJS mapalapad tungod kay kini magamit sa ubang mga librarya; flexible tungod sa iyang mapahiangay nga hingpit nga ekosistema. Ug progresibo tungod kay gisuportahan niini ang mga bahin sa JavaScript ug mga prinsipyo sa disenyo.
Kini nag-una nga naimpluwensyahan sa Angular, React, ug Vue ug adunay built-in nga dependency injection.
Features
- Kini yano nga gamiton, pagkat-on, ug pag-master.
- Kini libre ug Open-source (Lisensya sa MIT)
- Kusog nga Command Line Interface (CLI) alang sa dugang nga produktibo ug kayano sa pag-uswag
- Unit-testing nga mga programa nga sayon gamiton
- TypeScript, usa ka hugot nga gi-type nga pinulongan nga usa ka superset sa JavaScript, gigamit.
- Pag-uswag ug pagpadayon sa usa ka aktibo nga codebase.
- Suporta alang sa gatusan ka mga module nga espesipiko sa salag nga naghimo niini nga yano nga mag-interface sa mga sikat nga teknolohiya ug ideya sama sa TypeORM, Mongoose, GraphQL, logging, validation, caching, WebSockets, ug uban pa.
Unsa ang mga bloke sa pagtukod sa NestJS?
Ang mga sangkap sa pagtukod sa mga aplikasyon sa Nest gilista sa ubos; adunay uban, apan kining tulo mao ang labing mahinungdanon. Atong tan-awon dayon sila.
1. Mga tigkontrol
Ang mga tigkontrol mao ang nagdumala sa pagproseso sa umaabot nga mga hangyo ug pagtubag sa mga kliyente. Nakadawat kini og partikular nga mga hangyo sa HTTP, ug ang sistema sa pag-ruta nagtino kung unsang controller ang makadawat kung unsang hangyo.
Naghimo kini og usa ka angay nga tubag nga ipadala. Sa tabang sa mga klase ug mga dekorador, usa ka yano nga kolektor ang gitukod ug ang matag controller adunay kaugalingon nga set sa mga ruta alang sa paghimo sa lainlaing mga buluhaton.
2. Mga tighatag
Ang mga provider usa ka importanteng ideya sa Nest. Daghan sa kinauyokan nga mga klase sa Nest — mga serbisyo, mga repositoryo, mga pabrika, mga katabang, ug uban pa – mahimong madumala isip mga tighatag.
Ang sukaranan nga ideya sa usa ka provider mao nga kini mahimong ma-injected isip dependency; kini nagpasabot nga ang mga butang makahimo ug lain-laing mga asosasyon sa usag usa, ug ang papel sa "wiring up" nga mga instance sa mga butang mahimong ma-outsource sa Nest runtime system.
3. Mga Modulo
Ang module usa ka klase nga adunay @Module() decorator nga nag-organisar sa mga sangkap sa istruktura sa aplikasyon. Ang matag aplikasyon adunay usa ka gamut nga module nga gigamit sa paghimo sa aplikasyon graph, nga dugang nga pagsulbad sa mga dependency ug interaksyon tali sa provider ug sa module.
Kini nga dekorador naghatag og metadata sa Nest.js aron mailhan kung unsang mga component, controller, o uban pang mga kapanguhaan ang gamiton sa code sa aplikasyon ug i-combine kini ngadto sa usa ka set.
Ang matag module adunay usa ka koleksyon sa mga kapabilidad nga konektado sa usa ka paagi.
Pagsugod sa NestJS
1. instalar
Atong i-install ang NestJS ug maghimo ug proyekto niini pinaagi sa pagsunod niini nga mga lakang:
Ang mosunod nga istruktura sa direktoryo pagahimoon isip resulta niini:
2. Mga tigkontrol
Ang mga bloke sa pagtukod sa Salag maoy mga tigkontrol. Kini ang mga lokasyon diin ang mga inbound nga hangyo pagadumala. Mahimo nimong ipiho ang agianan sa ruta gamit ang mga modifier sa pamaagi sa HTTP (Get, Post, Put, Delete, ug uban pa) nga mga dekorador, ingon sa makita sa code sa ubos.
Gigamit sa Nestjs ang dekorador nga pamaagi ug kasagaran gipalambo sa Typescript, bisan kung kini nagsuporta usab sa JavaScript. Mahimo ka usab mogamit usa ka validator sa klase aron ma-validate ang lawas sa hangyo.
Magbuhat na lang ko og instance sa Nestjs server ug idugang ang ValidationPipe sa tibuok kalibutan. Ang mga tubo kay mga pamaagi lang nga gipatuman atubangan sa mga Controller. Ang mga tubo mahimo usab nga magamit sa lebel sa pamaagi/argumento gamit ang @UsePipes decorator.
3. Mga tighatag
Ang mga tighatag usa pa ka kritikal nga bahin sa Nestjs. Sa pagkakaron, nagtipig ako og datos sa usa ka temporaryo nga variable. Mao nga ang ingon ka yano nga buluhaton mahimong matuman gamit ang mga tigdumala sa Controller.
Bisan pa, alang sa mas dako, mas komplikado nga lohika, ang pagbulag sa code ug paggamit pag-usab mahimong lisud. Kini mao ang sa diha nga ang mga suppliers mosulod. Ikaw mahimo sa pagdeklarar/paghimo sa usa ka provider sa ibabaw sa usa ka klase pinaagi sa paggamit sa @Injectable decorator. Dayon, gamit ang mga providers, mahimo nimo ang dependency injection, logging, ug uban pang mga buluhaton.
4. Mga Modulo
Ang mga module sa Nestjs dili global; hinoon, sila adunay giladmon.
Bisan pa, mahimo usab kini ipaambit sa bisan unsang ubang mga module. Bisan kung kini, sama sa Angular, nagtanyag sa Global Modules, mas maayo nga itago ang Mga Serbisyo/Controller sa module diin kini kasagarang gigamit sa Nestjs.
Ang NestCLI gigamit sa paghimo og mga module sa kasagaran, ug ang mga providers/controllers nga namugna sa konteksto sa module kay awtomatikong idugang sa CLI. Kini nailhan nga feature modules.
5. Exception Filters
Ang mga pagsala sa eksepsiyon mao ang mga tigdumala sa sayop nga gisangpit sa dihang ang usa ka Controller molabay ug eksepsiyon. Awtomatiko kini nga nagdumala sa isyu ug naghatud sa usa ka angay, user-friendly nga mensahe sa sayup.
Daghang HttpException nga napanunod nga Exceptions ang gihatag sa package @nestjs/common, lakip ang NotFoundException, BadRequestException, NotAcceptableException, UnauthorizedException, ug uban pa. Mahimo pa nimo nga idisenyo ang imong kaugalingon nga ExceptionFilter.
6. Middleware
Ang usa ka function nga gigamit sa wala pa ang tigdumala sa ruta gitawag nga middleware. Ang hangyo ug tubag nga mga butang, ingon man ang sunod() middleware function sa application's request-response cycle, kay accessible sa middleware functions.
Ang usa ka variable nga gitawag nga sunod sagad gigamit aron mahibal-an ang sunod nga function sa middleware. Mahimong ipatuman ang Custom Nest middleware sa usa ka pamaagi o klase gamit ang @Injectable() decorator.
7. Mga guwardiya
Usa ra ka butang ang responsable sa mga guwardiya. Responsibilidad nila ang pag-assess kung ang usa ka hangyo iproseso ba sa controller base sa piho nga mga kahimtang (Piho, lohika nga gitakda sa gumagamit).
Makatabang kini sa pag-authenticate/awtorisasyon ug mao ang girekomendar nga pamaagi sa Nestjs.
Bisan kung ang pag-authenticate/permiso, ug uban pa, mahimo gamit ang middleware, wala kini gihimo sa ekspres o uban pang mga server sa HTTP tungod kay wala silay kalabutan nga lig-on nga konteksto ug wala’y hinungdan nga mahibal-an kung unsang pamaagi ang gamiton sa pagproseso sa hangyo.
bentaha
- Ang balangkas nagsalig kaayo sa mga anotasyon, nga gigamit aron makahimo bisan unsa gikan sa mga endpoint hangtod sa dokumentasyon sa Swagger. Ang mga endpoint kay sukaranan ug hapsay, ug ang mga anotasyon nagpasayon sa pag-uswag sa kinatibuk-an.
- Yano ra ang pag-externalize sa mga module sa kinatibuk-ang katuyoan ug paggamit pag-usab sa code sa daghang mga proyekto tungod kay ang Nest.js usa ka framework nga nakabase sa module.
- Ang istruktura sa folder sa Nest.js dakog naimpluwensyahan sa Angular. Kung nagdesinyo ug serbisyo sa Nest, gitugotan niini ang gamay nga downtime.
- Ang mga sangkap adunay kaugalingon nga mga direktoryo, nga adunay gamut nga sulud sa module sa aplikasyon ug panguna nga file. Tungod sa kayano sa istruktura, mas daghang pagtagad ang mahimong ibutang sa disenyo sa mga endpoint ug sa ilang mga kustomer kay sa istruktura sa aplikasyon.
- Ang Nest, sama sa Angular, nagtanyag usa ka nindot nga command-line tool, Nestjs/cli, nga magamit pinaagi sa Node Package Manager.
disadvantages
- Ang Nest adunay bentaha sa termino sa paggamit sa TypeScript ug Angular nga panagsama, apan kulang kini sa pinansyal nga suporta sa usa ka dako nga korporasyon.
- Ang kakuwang sa dokumentasyon maoy labing dakong hulga sa mga tiggamit sa Nest. Bisan kung ang balangkas adunay maayo kaayo nga interaksyon sa ubang mga balangkas, ang dokumentasyon gamay ra ug wala magtubag sa bisan unsang potensyal nga kalisud.
- Ang salag adunay bentaha sa termino sa paggamit sa TypeScript ug Angular.
Panapos
Naghatag ang NestJS sa mga developer og dako nga paa. Aron masugdan ang pag-uswag, ang kinahanglan nimong buhaton mao paghimo og bag-ong app ug maayo ka nga moadto. Kini nga balangkas naghatag usa ka hinungdanon nga pag-uswag dayon, samtang nagtabang usab kanimo sa paghimo og dugang nga mga yugto pinaagi sa pag-establisar sa usa ka angay nga arkitektura sa app.
Gigamit niini ang mga cutting-edge nga mga pamaagi ug teknolohiya aron makagama og mga aplikasyon nga madumala ug malungtaron. Mahimo kining gamiton sa pagkonektar sa GraphQL, WebSockets, ug paghimo og mga microservice.
Leave sa usa ka Reply