Nan 2021, JavaScript se te langaj pwogramasyon ki pi lajman itilize.
Apèl nan teknoloji sa a se nye, jan yo wè pa anpil kantite kad ki pèmèt pwogram JavaScript.
Gen Angular, React, ak Vue sou fasad la, osi byen ke Express ak Next sou backend la, pou mansyone kèk.
Avèk anpil kad bèl bagay pou pwogram backend nan JavaScript aksesib, ou ka panse poukisa mwen ta chèche yon bagay diferan olye ke tou senpleman itilize Express oswa Next.
Petèt ou bezwen kòmanse pwosesis devlopman an byen vit ak yon chodyè desan, ak manyèlman ajoute pa sèlman nouvo contrôleur, men tou sèvis fè ou malad.
Oswa ou vle kreye gwo, lojisyèl évolutive ki senp pou jere. Oswa petèt ou tou senpleman vle travay nan yon fason ki pi efikas ak pratik.
Kèlkeswa sa ki vre nan sikonstans ou, Nest.js ka solisyon pafè a pou bezwen ou yo.
Pòs sa a pral bay NestJS konesans ak eksperyans pratik.
ki sa ki NestJS?
NestJS se yon kad Node pwogresif ki louvri sous, dilatabl, ak adaptab .Js kad pou bati, angaje ak defi sistèm backend. Li se kounye a Ne ak to kwasans ki pi rapid.
Fondasyon TypeScript pou js. NestJS yo itilize pou kreye aplikasyon ki évolutive, ki kapab teste, epi ki konekte byen.
Li ajoute évolutivité nan Node. Sèvè Js yo te pran nan yon nivo tout nouvo. PostgreSQL, MongoDB, ak MySQL se pami baz done yo sipòte.
NestJS se ekstansib paske li ka itilize ak lòt bibliyotèk; fleksib akòz ekosistèm adaptab totalman li yo. Ak pwogresif depi li sipòte karakteristik JavaScript ak prensip konsepsyon.
Li se prensipalman enfliyanse pa Angilè, React, ak Vue epi li vini ak piki depandans entegre.
karakteristik
- Li senp pou itilize, aprann, ak metrize.
- Li gratis epi louvri-sous (Lisans MIT)
- Pwisan Entèfas Liy Kòmand (CLI) pou ogmante pwodiktivite ak senplisite devlopman
- Pwogram tès inite yo ki senp pou itilize
- Yo itilize TypeScript, yon lang byen tape ki se yon superset JavaScript.
- Devlopman ak antretyen nan yon baz kod aktif.
- Sipò pou dè santèn de modil nich espesifik ki fè li senp pou koòdone ak teknoloji popilè ak lide tankou TypeORM, Mongoose, GraphQL, anrejistreman, validation, kachèt, WebSockets, ak plis ankò.
Ki blòk NestJS yo ye?
Konpozan bilding aplikasyon Nest yo endike anba a; gen lòt, men twa sa yo se pi enpòtan an. Ann gade yo byen vit.
1. Kontwolè
Kontwolè yo an chaj nan trete demann fèk ap rantre epi reponn a kliyan yo. Li resevwa demann HTTP patikilye, ak sistèm routage detèmine ki kontwolè ap resevwa ki demann.
Lè sa a, li ekri yon repons apwopriye pou voye. Avèk èd nan klas ak dekoratè, yo bati yon pèseptè senp epi chak kontwolè gen pwòp seri wout li pou fè divès travay.
2. Founisè yo
Founisè yo se yon lide kle nan Nest. Anpil nan klas Nest debaz yo - sèvis, depo, faktori, moun k ap ede, ak sou sa - ka okipe kòm founisè.
Nosyon debaz yon founisè a se ke li ka enjekte kòm yon depandans; sa a vle di ke objè yo ka fòme divès asosyasyon youn ak lòt, ak wòl nan "filaj moute" ka objè yo ka sitou tretans nan sistèm nan ègzekutabl Nest.
NAN. Modil yo
Yon modil se yon klas ak dekoratè @Module() ki òganize eleman estrikti aplikasyon an. Chak aplikasyon gen yon modil rasin ki itilize pou konstwi graf aplikasyon an, ki plis rezoud depandans ak entèraksyon ant founisè a ak modil la.
Dekoratè sa a bay Nest.js metadata pou kapab idantifye ki konpozan, kontwolè, oswa lòt resous yo pral itilize nan kòd aplikasyon an epi konbine yo nan yon seri sèl.
Chak modil gen yon koleksyon kapasite ki konekte nan kèk fason.
Kòmanse ak NestJS
1. Enstalasyon
Ann enstale NestJS epi fè yon pwojè avèk li nan swiv etap sa yo:
Estrikti anyè sa a pral kreye kòm rezilta sa a:
2. Kontwolè
Blòk bilding Nich la se kontwolè. Sa yo se kote yo pral okipe demann antre yo. Ou ka presize chemen wout la lè l sèvi avèk modifikatè metòd HTTP (Jwenn, Post, Mete, Efase, ak sou sa) dekoratè, jan yo wè nan kòd ki anba a.
Nestjs anplwaye apwòch dekoratè a epi li sitou devlope nan Typescript, byenke li sipòte tou JavaScript. Ou kapab tou itilize yon validateur klas pou valide kò demann lan.
Mwen jis pral fè yon egzanp sèvè Nestjs epi ajoute ValidationPipe globalman. Tiyo yo se jis metòd ki egzekite anvan Kontwolè. Tiyo ka aplike tou nan nivo metòd / agiman lè l sèvi avèk dekoratè @UsePipes la.
3. Founisè yo
Founisè yo se yon lòt eleman enpòtan nan Nestjs. Byen lwen, mwen te estoke done nan yon varyab tanporè. Se poutèt sa yon travay ki senp ka akonpli lè l sèvi avèk moun k ap okipe Kontwolè.
Sepandan, pou pi gwo, pi konplike lojik, kòd separasyon ak réutilisation ta difisil. Sa a se lè founisè antre. Ou ka deklare/kreye yon founisè anlè yon klas lè w sèvi ak dekoratè @Injectable. Lè sa a, lè l sèvi avèk founisè yo, ou ka fè piki depandans, anrejistreman, ak lòt travay.
NAN. Modil yo
Modil Nestjs yo pa mondyal; olye de sa, yo gen pwofondè.
Sepandan, li ka pataje ak nenpòt lòt modil tou. Menmsi li, tankou angilè, ofri Modil Global, li pi bon pou kenbe Sèvis / Kontwolè nan modil la kote yo pi souvan itilize nan Nestjs.
NestCLI yo itilize pou pwodui modil pi fò nan tan an, epi CLI a otomatikman ajoute founisè/kontwolè ki te pwodwi nan kontèks modil sa a. Sa yo ke yo rekonèt kòm modil karakteristik.
5. Filtè eksepsyon
Filtè eksepsyon yo se moun kap okipe erè ki envoke lè yon Kontwolè voye yon eksepsyon. Li otomatikman jere pwoblèm nan epi li bay yon mesaj erè ki apwopriye ak zanmitay.
Anpil HttpException eritye Eksepsyon yo bay nan pake @nestjs/common, tankou NotFoundException, BadRequestException, NotAcceptableException, UnauthorizedException, ak anpil lòt. Ou ka menm konsepsyon pwòp ExceptionFilter ou.
6. Middleware
Yon fonksyon ki envoke anvan moun kap okipe wout la rele middleware. Objè demann ak repons yo, ansanm ak fonksyon middleware pwochen() nan sik demann-repons aplikasyon an, yo aksesib pou fonksyon middleware yo.
Yon varyab ki rele pwochen anjeneral yo itilize pou idantifye pwochen fonksyon middleware la. Custom Nest middleware ka aplike nan yon metòd oswa yon klas lè l sèvi avèk @Injectable () dekoratè a.
7. Gad
Gad yo responsab sèlman pou yon sèl bagay. Se responsablite yo pou evalye si wi ou non yon demann ap trete pa kontwolè a ki baze sou sikonstans espesifik (espesifikman, lojik itilizatè-defini).
Li itil pou otantifikasyon/otorizasyon e se metòd rekòmande nan Nestjs.
Menmsi otantifikasyon/otorizasyon, elatriye, yo ka fè lè l sèvi avèk middleware, li pa fèt nan eksprime oswa lòt sèvè HTTP paske yo pa gen yon kontèks solid ki gen rapò epi yo pa gen okenn rezon pou konnen ki metòd yo pral itilize pou trete demann lan.
Avantaj
- Fondasyon an depann anpil sou anotasyon, ki itilize pou pwodui nenpòt bagay soti nan pwen final yo rive nan dokiman Swagger. Pwen final yo debaz ak pwòp, ak anotasyon yo fè devlopman pi fasil an jeneral.
- Li senp pou ekstèn modil jeneral epi reitilize kòd nan anpil pwojè paske Nest.js se yon kad ki baze sou modil.
- Estrikti katab Nest.js 'siyifikativman enfliyanse pa Angular. Lè w ap desine yon sèvis Nest, sa pèmèt pou yon ti tan D'.
- Eleman yo gen pwòp repèrtwar yo, ak rasin lan ki gen modil aplikasyon an ak dosye prensipal la. Akòz senplisite estrikti a, yo ka mete plis atansyon sou konsepsyon pwen final yo ak kliyan yo olye ke estrikti aplikasyon an.
- Nest, tankou Angular, ofri yon bèl zouti liy kòmand, Nestjs/cli, ki disponib atravè Manadjè Pake Node.
Enkonvenyans
- Nest gen yon avantaj an tèm de itilizasyon TypeScript ak entegrasyon angilè, men li manke sipò finansye nan yon gwo sosyete.
- Mank dokimantasyon yo reprezante pi gwo menas pou itilizatè Nest yo. Malgre ke kad la gen entèraksyon ekselan ak lòt kad, dokiman an se rar epi yo pa adrese okenn difikilte potansyèl.
- Nich gen yon avantaj an tèm de itilizasyon TypeScript ak angilè.
konklizyon
NestJS bay devlopè yo yon gwo pye. Pou kòmanse devlopman, tout sa ou bezwen fè se kreye yon nouvo app epi ou bon pou ale. Fondasyon sa a bay yon ogmantasyon siyifikatif imedyatman, pandan y ap ede w pran etap adisyonèl lè w etabli yon achitekti aplikasyon apwopriye.
Li fè sèvi ak metòd dènye kri ak teknoloji yo pwodwi aplikasyon ki tou de jere ak ki dire lontan. Li ka itilize pou konekte ak GraphQL, WebSockets, ak konstwi microservices.
Kite yon Reply