Talaan ng nilalaman[Tago][Ipakita]
Noong 2021, ang JavaScript ang pinakamalawak na ginagamit na programming language.
Hindi maikakaila ang apela ng teknolohiyang ito, gaya ng nakikita ng napakaraming frameworks na nagpapagana ng JavaScript programming.
Mayroong Angular, React, at Vue sa frontend, pati na rin ang Express at Next sa backend, upang banggitin ang ilan.
Sa napakaraming magagandang frameworks para sa backend programming sa JavaScript na naa-access, maaaring iniisip mo kung bakit ako maghahanap ng ibang bagay sa halip na gumamit lamang ng Express o Next.
Marahil ay kailangan mong simulan nang mabilis ang proseso ng pag-unlad gamit ang isang disenteng boilerplate, at ang manu-manong pagdaragdag hindi lamang ng mga bagong controller kundi pati na rin ang mga serbisyo ay nagpapasakit sa iyo.
O gusto mong lumikha ng malaki, nasusukat na software na simpleng pamahalaan. O baka gusto mo lang magtrabaho sa mas mahusay at maginhawang paraan.
Anuman ang totoo sa iyong sitwasyon, ang Nest.js ay maaaring maging perpektong solusyon para sa iyong mga pangangailangan.
Magbibigay ang post na ito ng mga insight sa NestJS pati na rin ang hands-on na karanasan.
Ano ang NestJS?
NestJS ay isang progresibong balangkas ng Node na open-source, napapalawak, at madaling ibagay .Js framework para sa pagbuo, nakakaengganyo at mapaghamong mga backend system. Ito na ngayon ang Node na may pinakamabilis na rate ng paglago.
TypeScript framework para sa js. Ginagamit ang NestJS para gumawa ng mga application na nasusukat, nasusubok, at hindi nakakabit.
Nagdaragdag ito ng scalability sa Node. Ang mga server ng Js ay dinala sa isang bagong antas. Ang PostgreSQL, MongoDB, at MySQL ay kabilang sa mga database na sinusuportahan.
Extensible ang NestJS dahil magagamit ito sa iba pang mga library; nababaluktot dahil sa ganap nitong adaptable na ecosystem. At progresibo dahil sinusuportahan nito ang mga feature ng JavaScript at mga prinsipyo ng disenyo.
Pangunahing naiimpluwensyahan ito ng Angular, React, at Vue at may kasamang built-in na dependency injection.
Mga tampok
- Ito ay simpleng gamitin, matutunan, at master.
- Ito ay libre at open-source (lisensya ng MIT)
- Napakahusay na Command Line Interface (CLI) para sa mas mataas na produktibo at pagiging simple ng pag-unlad
- Unit-testing programs na madaling gamitin
- TypeScript, isang mahigpit na na-type na wika na isang superset ng JavaScript, ay ginagamit.
- Pag-unlad at pagpapanatili ng isang aktibong codebase.
- Suporta para sa daan-daang mga module na partikular sa pugad na ginagawang simple ang pag-interface sa mga sikat na teknolohiya at ideya tulad ng TypeORM, Mongoose, GraphQL, pag-log, validation, caching, WebSockets, at higit pa.
Ano ang mga building block ng NestJS?
Ang mga bahagi ng gusali ng mga Nest application ay nakalista sa ibaba; may iba pa, ngunit ang tatlong ito ay ang pinakamahalaga. Tingnan natin ang mga ito nang mabilis.
1. Controllers
Ang mga Controller ang namamahala sa pagproseso ng mga papasok na kahilingan at pagtugon sa mga kliyente. Tumatanggap ito ng mga partikular na kahilingan sa HTTP, at tinutukoy ng sistema ng pagruruta kung aling controller ang makakakuha ng aling kahilingan.
Pagkatapos ay bumubalangkas ito ng angkop na sagot na ipapadala. Sa tulong ng mga klase at dekorador, isang simpleng kolektor ang binuo at ang bawat controller ay may sariling hanay ng mga ruta para sa paggawa ng iba't ibang gawain.
2. Mga tagapagbigay
Ang mga provider ay isang mahalagang ideya sa Nest. Marami sa mga pangunahing klase ng Nest — mga serbisyo, repositoryo, pabrika, katulong, at iba pa – ay maaaring pangasiwaan bilang mga provider.
Ang pangunahing ideya ng isang provider ay maaari itong iturok bilang isang dependency; ito ay nagpapahiwatig na ang mga bagay ay maaaring bumuo ng iba't ibang mga asosasyon sa isa't isa, at ang papel na ginagampanan ng "wiring up" na mga instance ng mga bagay ay maaaring higit na mai-outsource sa Nest runtime system.
3. Mga modyul
Ang module ay isang klase na may @Module() decorator na nag-aayos ng mga bahagi ng istraktura ng application. Ang bawat application ay may root module na ginagamit sa pagbuo ng application graph, na higit pang nagre-resolba sa mga dependency at pakikipag-ugnayan sa pagitan ng provider at ng module.
Ang dekorador na ito ay nagbibigay ng metadata sa Nest.js upang matukoy kung aling mga bahagi, controller, o iba pang mapagkukunan ang gagamitin sa code ng aplikasyon at pagsamahin ang mga ito sa isang set.
Ang bawat module ay may koleksyon ng mga kakayahan na konektado sa ilang paraan.
Pagsisimula sa NestJS
1. instalasyon
I-install natin ang NestJS at gumawa ng proyekto gamit ito sa pamamagitan ng pagsunod sa mga hakbang na ito:
Ang sumusunod na istraktura ng direktoryo ay malilikha bilang isang resulta nito:
2. Controllers
Ang mga bloke ng gusali ng Nest ay mga controllers. Ito ang mga lokasyon kung saan hahawakan ang mga papasok na kahilingan. Maaari mong tukuyin ang path ng ruta gamit ang mga modifier ng HTTP method (Kunin, I-post, Ilagay, Tanggalin, at iba pa) na mga dekorador, tulad ng nakikita sa code sa ibaba.
Ginagamit ng Nestjs ang diskarte sa dekorador at kadalasang binuo sa Typescript, bagama't sinusuportahan din nito ang JavaScript. Maaari ka ring gumamit ng validator ng klase upang patunayan ang katawan ng kahilingan.
Gagawa lang ako ng instance ng Nestjs server at magdaragdag ng ValidationPipe sa buong mundo. Ang mga tubo ay mga pamamaraan lamang na isinasagawa bago ang mga Controller. Maaari ding ilapat ang mga pipe sa antas ng pamamaraan/argumento gamit ang @UsePipes decorator.
3. Mga tagapagbigay
Ang mga provider ay isa pang kritikal na bahagi ng Nestjs. Sa ngayon, nag-iimbak ako ng data sa isang pansamantalang variable. Iyon ang dahilan kung bakit ang isang simpleng gawain ay maaaring magawa gamit ang mga humahawak ng Controller.
Gayunpaman, para sa mas malaki, mas kumplikadong lohika, ang paghihiwalay ng code at muling paggamit ay magiging mahirap. Ito ay kung kailan papasok ang mga supplier. Maaari kang magdeklara/gumawa ng provider sa itaas ng isang klase sa pamamagitan ng paggamit ng @Injectable decorator. Pagkatapos, gamit ang mga provider, maaari kang gumawa ng dependency injection, pag-log, at iba pang mga gawain.
4. Mga modyul
Ang mga module ng Nestjs ay hindi pandaigdigan; sa halip, mayroon silang lalim.
Gayunpaman, maaari rin itong ibahagi sa anumang iba pang mga module. Bagama't ito, tulad ng Angular, ay nag-aalok ng Mga Global Module, mas ipinapayong panatilihin ang Mga Serbisyo/Controller sa module kung saan ang mga ito ay pinakakaraniwang ginagamit sa Nestjs.
Ang NestCLI ay ginagamit upang makagawa ng mga module sa halos lahat ng oras, at ang mga provider/controller na nabuo sa konteksto ng module na iyon ay awtomatikong idinaragdag ng CLI. Ang mga ito ay kilala bilang mga module ng tampok.
5. Mga Exception Filter
Ang mga filter ng pagbubukod ay mga tagapangasiwa ng error na hinihingi kapag ang isang Controller ay naghagis ng isang pagbubukod. Awtomatiko nitong pinamamahalaan ang isyu at naghahatid ng naaangkop, madaling gamitin na mensahe ng error.
Maraming HttpException na minanang Exception ang ibinibigay ng package na @nestjs/common, kasama ang NotFoundException, BadRequestException, NotAcceptableException, UnauthorizedException, at marami pang iba. Maaari ka ring magdisenyo ng iyong sariling ExceptionFilter.
6. Middleware
Ang isang function na na-invoke bago ang tagapangasiwa ng ruta ay tinatawag na middleware. Ang kahilingan at pagtugon na mga bagay, pati na rin ang susunod na() middleware function sa kahilingan-tugon cycle ng application, ay naa-access sa middleware function.
Ang isang variable na tinatawag na susunod ay karaniwang ginagamit upang tukuyin ang susunod na middleware function. Maaaring ipatupad ang Custom Nest middleware sa isang paraan o isang klase gamit ang @Injectable() decorator.
7. Mga bantay
Ang mga guwardiya ay may pananagutan lamang sa isang bagay. Responsibilidad nilang suriin kung ang isang kahilingan ay ipoproseso o hindi ng controller batay sa mga partikular na pangyayari (Sa partikular, lohika na tinukoy ng gumagamit).
Ito ay kapaki-pakinabang para sa pagpapatotoo/pagpapahintulot at ito ang inirerekomendang paraan sa Nestjs.
Kahit na ang pagpapatotoo/mga pahintulot, atbp., ay maaaring gawin gamit ang middleware, hindi ito ginagawa sa express o iba pang mga HTTP server dahil wala silang kaugnay na malakas na konteksto at walang dahilan upang malaman kung aling paraan ang gagamitin upang iproseso ang kahilingan.
Bentahe
- Ang framework ay lubos na umaasa sa mga anotasyon, na ginagamit upang makagawa ng anuman mula sa mga endpoint hanggang sa dokumentasyon ng Swagger. Ang mga endpoint ay basic at maayos, at ang mga anotasyon ay nagpapadali sa pag-unlad sa pangkalahatan.
- Simple lang na i-externalize ang mga pangkalahatang layunin na module at muling gamitin ang code sa maraming proyekto dahil ang Nest.js ay isang module-based na framework.
- Malaking naiimpluwensyahan ng Angular ang istraktura ng folder ng Nest.js. Kapag nagdidisenyo ng serbisyo ng Nest, nagbibigay ito ng kaunting downtime.
- Ang mga bahagi ay may sariling mga direktoryo, na ang ugat ay naglalaman ng module ng aplikasyon at pangunahing file. Dahil sa pagiging simple ng istraktura, higit na pansin ang maaaring ilagay sa disenyo ng mga endpoint at kanilang mga customer kaysa sa istraktura ng application.
- Ang Nest, tulad ng Angular, ay nag-aalok ng magandang command-line tool, Nestjs/cli, na available sa pamamagitan ng Node Package Manager.
Mga Disbentaha
- May kalamangan ang Nest sa mga tuntunin ng paggamit ng TypeScript at pagsasama ng Angular, ngunit kulang ito sa pinansiyal na suporta ng isang malaking korporasyon.
- Ang kakulangan ng dokumentasyon ay nagdudulot ng pinakamalaking banta sa mga user ng Nest. Bagama't ang balangkas ay may mahusay na pakikipag-ugnayan sa iba pang mga balangkas, ang dokumentasyon ay kalat-kalat at hindi tumutugon sa anumang mga potensyal na paghihirap.
- May bentahe ang Nest sa mga tuntunin ng paggamit ng TypeScript at Angular.
Konklusyon
Nagbibigay ang NestJS sa mga developer ng malaking hakbang. Upang simulan ang pag-unlad, ang kailangan mo lang gawin ay lumikha ng bagong app at handa ka nang umalis. Ang framework na ito ay nagbibigay ng makabuluhang tulong kaagad, habang tinutulungan ka rin sa pagkuha ng mga karagdagang yugto sa pamamagitan ng pagtatatag ng angkop na arkitektura ng app.
Gumagamit ito ng mga makabagong pamamaraan at teknolohiya upang makagawa ng mga application na parehong mapapamahalaan at pangmatagalan. Maaari itong magamit upang kumonekta sa GraphQL, WebSockets, at bumuo ng mga microservice.
Mag-iwan ng Sagot