2021-жылы JavaScript эң көп колдонулган программалоо тили болгон.
Бул технологиянын жагымдуулугу талашсыз, муну JavaScript программалоону иштеткен алкактардын көптүгү көрүнүп турат.
Фронт тарапта Angular, React жана Vue, ошондой эле экспресс жана Next арт жагында бар, алардын айрымдарын атап өтүү керек.
JavaScript'те сервердик программалоо үчүн көптөгөн сонун алкактар жеткиликтүү болгондуктан, сиз эмне үчүн Express же Next дегенди колдонбой, башка нерсени издейм деп ойлоп жаткандырсыз.
Мүмкүн, сиз иштеп чыгуу процессин тезирээк баштооңуз керек жана жаңы контроллерлорду гана эмес, ошондой эле кызматтарды кол менен кошуу сизди оорутуп жиберет.
Же сиз башкарууга оңой болгон чоң, масштабдуу программалык камсыздоону түзгүңүз келет. Же, балким, сиз жөн гана натыйжалуураак жана ыңгайлуураак иштөөнү каалайсыз.
Сиздин шартыңызда кайсынысы чын экенине карабастан, Nest.js сиздин муктаждыктарыңыз үчүн эң сонун чечим боло алат.
Бул пост NestJS маалыматын, ошондой эле практикалык тажрыйбаны берет.
NestJS деген эмне?
NestJS ачык булактуу, кеңейтилүүчү жана ыңгайлаштырылган прогрессивдүү Node алкагы .Js куруу, тартуу жана татаал backend системалары үчүн негиз. Бул азыр эң ылдам өсүү темпи бар түйүн.
js үчүн TypeScript алкагы. NestJS масштабдуу, сыналуучу жана эркин туташкан колдонмолорду түзүү үчүн колдонулат.
Бул түйүнгө масштабдуулукту кошот. Js серверлери жаңы деңгээлге көтөрүлдү. PostgreSQL, MongoDB жана MySQL колдоого алынган маалымат базаларынын арасында.
NestJS кеңейтилет, анткени аны башка китепканалар менен колдонсо болот; ийкемдүү, анткени анын ийкемдүү толук кандуу экосистемасы. Жана прогрессивдүү, анткени ал JavaScript өзгөчөлүктөрүн жана дизайн принциптерин колдойт.
Ага негизинен Angular, React жана Vue таасир этет жана орнотулган көз карандылык инъекциясы менен келет.
Өзгөчөлүктөрү
- Аны колдонуу, үйрөнүү жана өздөштүрүү жөнөкөй.
- Бул бекер жана ачык булак (MIT лицензиясы)
- Өндүрүмдүүлүктү жогорулатуу жана иштеп чыгуунун жөнөкөйлүгү үчүн Күчтүү Command Line Interface (CLI).
- Колдонууга жөнөкөй болгон бирдикти сыноо программалары
- TypeScript, катуу терилген тил, ал JavaScript'тин жогорку топтому болуп саналат.
- Активдүү код базасын иштеп чыгуу жана колдоо.
- TypeORM, Mongoose, GraphQL, журналдарды каттоо, текшерүү, кэштөө, WebSockets жана башкалар сыяктуу популярдуу технологиялар жана идеялар менен интерфейсти жөнөкөйлөтүүчү жүздөгөн уяга тиешелүү модулдарды колдоо.
NestJS'тин курулуш материалы кандай?
Nest колдонмолорунун курулуш компоненттери төмөндө келтирилген; башкалар да бар, бирок бул үчөө эң маанилүү. Келгиле, аларды тезирээк карап көрөлү.
1. контроллери
Контролёрлор түшкөн суроо-талаптарды иштеп чыгуу жана кардарларга жооп берүү үчүн жооптуу. Ал өзгөчө HTTP сурамдарын кабыл алат жана маршруттук система кайсы контроллер кайсы суроону алаарын аныктайт.
Андан кийин жөнөтүү үчүн ылайыктуу жооптун долбоорун түзөт. Класстардын жана жасалгалоочулардын жардамы менен жөнөкөй коллектор курулат жана ар бир контроллердин ар кандай тапшырмаларды аткаруу үчүн өзүнүн маршруттары бар.
2. Жабдып
Провайдерлер Nestтеги негизги идея. Көптөгөн негизги Nest класстары – кызматтар, репозиторийлер, фабрикалар, жардамчылар жана башкалар – провайдер катары иштесе болот.
Провайдердин негизги түшүнүгү аны көз карандылык катары киргизүүгө болот; бул объекттер бири-бири менен ар кандай ассоциацияларды түзө аларын жана объекттердин "зымдарынын" ролун негизинен Nest иштөө убактысы тутумуна тапшырса болот дегенди билдирет.
3. Модулдар
Модуль бул колдонмонун структурасынын компоненттерин уюштурган @Module() декоратору бар класс. Ар бир тиркемеде тиркеме графигин куруу үчүн колдонулган тамыр модулу бар, ал андан ары камсыздоочу менен модулдун ортосундагы көз карандылыкты жана өз ара аракеттенүүнү чечет.
Колдонмонун кодунда кайсы компоненттер, контроллерлор же башка ресурстар колдонуларын аныктоо жана аларды бир топтомго бириктирүү үчүн бул жасалгалоочу Nest.js'ке метадайындарды берет.
Ар бир модулда кандайдыр бир жол менен байланышкан мүмкүнчүлүктөрдүн жыйындысы бар.
NestJS менен баштоо
1. орнотуу
Келиңиз, NestJSти орнотуп, бул кадамдарды аткаруу менен аны менен долбоор түзөлү:
Мунун натыйжасында төмөнкү каталог түзүмү түзүлөт:
2. контроллери
Nestтин курулуш блоктору контроллерлор болуп саналат. Бул кирүүчү суроо-талаптар карала турган жерлер. Төмөнкү коддо көрүнүп тургандай, сиз HTTP методунун өзгөрткүчтөрүн (Get, Post, Put, Delete, ж.
Nestjs декоратордук ыкманы колдонот жана көбүнчө Typescriptте иштелип чыккан, бирок ал JavaScriptти да колдойт. Сурамдын негизги бөлүгүн текшерүү үчүн класстын валидаторун да колдонсоңуз болот.
Мен жөн гана Nestjs серверинин инстанциясын жасап, ValidationPipe'ди глобалдык түрдө кошоюн деп жатам. Түтүктөр жөн гана контроллерлордун алдында аткарылуучу ыкмалар. Түтүктөрдү @UsePipes жасалгалоочусун колдонуу менен метод/аргумент деңгээлинде да колдонсо болот.
3. Жабдып
Провайдерлер Nestjsтин дагы бир маанилүү компоненти болуп саналат. Буга чейин мен маалыматтарды убактылуу өзгөрмөдө сактап жаткам. Ошондуктан мындай жөнөкөй тапшырманы Controller иштеткичтерин колдонуу менен аткарууга болот.
Бирок, чоңураак, татаалыраак логика үчүн кодду бөлүү жана кайра колдонуу кыйынга турат. Бул жеткирүүчүлөр келгенде. Сиз @Injectable жасалгалоочусун колдонуу менен класстын үстүнө провайдерди жарыялай/түзө аласыз. Андан кийин, провайдерлерди колдонуп, сиз көз карандылыкты инъекциялоону, журналды жазууну жана башка тапшырмаларды аткара аласыз.
4. Модулдар
Nestjs модулдары глобалдуу эмес; тескерисинче, алар тереңдикке ээ.
Бирок, аны башка модулдар менен да бөлүшсө болот. Бул, Angular сыяктуу, Глобалдык модулдарды сунуштайт, бирок Кызматтарды/Контролёрлорду Nestjs'те эң көп колдонулган модулда сактоо максатка ылайыктуу.
NestCLI көбүнчө модулдарды өндүрүү үчүн колдонулат жана ал модулдун контекстинде түзүлгөн провайдерлер/контроллерлор CLI тарабынан автоматтык түрдө кошулат. Булар өзгөчөлүк модулдары деп аталат.
5. Exception Filters
Өзгөчө чыпкалары - Контроллер өзгөчө учурду чыгарганда чакырылуучу ката иштеткичтери. Ал автоматтык түрдө маселени башкарат жана тиешелүү, колдонуучуга ыңгайлуу ката кабарын берет.
Көптөгөн HttpException тукум кууп өткөн өзгөчөлүктөр @nestjs/common пакети тарабынан камсыз кылынат, анын ичинде NotFoundException, BadRequestException, NotAcceptableException, UnauthorizedException жана башка көптөгөн нерселер. Сиз атүгүл өзүңүздүн ExceptionFilter түзө аласыз.
6. Орточо программа
Маршрутту иштетүүчүгө чейин чакырылган функция орто программа деп аталат. Сурам жана жооп объектилери, ошондой эле колдонмонун суроо-жооп циклиндеги кийинки() орто программалык камсыздоо функциясы орто программа функциялары үчүн жеткиликтүү.
Кийинки деп аталган өзгөрмө, адатта, кийинки орто программалык функцияны аныктоо үчүн колдонулат. Ыңгайлаштырылган Nest орто программасы @Injectable() жасалгалоочусун колдонуу менен методдо же класста ишке ашырылышы мүмкүн.
7. Сакчылар
Сакчылар бир гана нерсеге жооп беришет. Контроллер суроо-талапты конкреттүү жагдайлардын негизинде иштетеби же жокпу, баалоо алардын милдети (Тактап айтканда, колдонуучу аныктаган логика).
Бул аутентификация/авторизация үчүн пайдалуу жана Nestjs'те сунушталган ыкма.
Аутентификация/уруксат ж.б., орто программанын жардамы менен аткарылса да, ал экспресс же башка HTTP серверлеринде жасалбайт, анткени аларда күчтүү контекст жок жана сурамды иштетүү үчүн кайсы ыкма колдонулаарын билүүгө эч кандай негиз жок.
артыкчылыктары
- Алкак акыркы чекиттерден баштап Swagger документтерине чейин бардык нерсени өндүрүү үчүн колдонулган аннотацияларга көз каранды. Акыркы чекиттер негизги жана тыкан, аннотациялар жалпысынан иштеп чыгууну жеңилдетет.
- Nest.js модулга негизделген алкак болгондуктан, жалпы максаттагы модулдарды сыртка чыгаруу жана кодду көп долбоорлордо кайра колдонуу оңой.
- Nest.js папкасынын структурасына Angular олуттуу таасир этет. Nest кызматын иштеп чыгууда, бул минималдуу иштебей калууга мүмкүндүк берет.
- Компоненттердин өз каталогдору бар, тамыры тиркеме модулун жана негизги файлды камтыйт. Түзүмдүн жөнөкөйлүгүнөн улам, тиркеменин түзүмүнө эмес, акыркы чекиттердин жана алардын кардарларынын дизайнына көбүрөөк көңүл бурууга болот.
- Nest, Angular сыяктуу, Node Package Manager аркылуу жеткиликтүү Nestjs/cli деген жакшы буйрук сабын сунуштайт.
кемчиликтери
- Nest TypeScript колдонуу жана бурчтук интеграция жагынан артыкчылыкка ээ, бирок ал ири корпорациянын каржылык колдоосуна ээ эмес.
- Документтин жоктугу Nest колдонуучулары үчүн эң чоң коркунуч туудурат. Алкак башка алкактар менен эң сонун өз ара аракеттенишсе да, документтер сейрек жана мүмкүн болуучу кыйынчылыктарды чечпейт.
- Nest TypeScript колдонуу жана Angular жагынан артыкчылыкка ээ.
жыйынтыктоо
NestJS иштеп чыгуучуларга чоң мүмкүнчүлүк берет. Өнүктүрүү үчүн сиз эмне кылышыңыз керек жаңы колдонмо түзүү жана сен барганың жакшы. Бул алкак дароо эле олуттуу өсүштү камсыз кылат, ошол эле учурда ылайыктуу колдонмо архитектурасын түзүү менен кошумча этаптарды өтүүгө жардам берет.
Ал башкарылуучу жана узак мөөнөттүү тиркемелерди өндүрүү үчүн алдыңкы ыкмаларды жана технологияны колдонот. Бул GraphQL, WebSockets менен туташуу жана микросервистерди куруу үчүн колдонсо болот.
Таштап Жооп