През 2021 г. JavaScript беше най-широко използваният език за програмиране.
Привлекателността на тази технология е неоспорима, както се вижда от огромния брой рамки, които позволяват програмирането на JavaScript.
Има Angular, React и Vue на предния край, както и Express и Next в бекенда, за да споменем няколко.
С толкова много чудесни рамки за бекенд програмиране в JavaScript, достъпни, може би си мислите защо бих търсил нещо различно, вместо просто да използвам Express или Next.
Може би трябва да стартирате бързо процеса на разработка с приличен шаблон, а ръчното добавяне не само на нови контролери, но и на услуги ви разболява.
Или искате да създадете голям, мащабируем софтуер, който е лесен за управление. Или може би просто искате да работите по-ефективен и удобен начин.
Независимо кое е вярно във вашите обстоятелства, Nest.js може да бъде идеалното решение за вашите нужди.
Тази публикация ще предостави прозрения за NestJS, както и практически опит.
Какво е NestJS?
NestJS е прогресивна Node рамка, която е с отворен код, разширяема и адаптивна .Js рамка за изграждане, ангажиране и предизвикателни бекенд системи. Сега това е възелът с най-бърз темп на растеж.
TypeScript рамка за js. NestJS се използва за създаване на приложения, които са мащабируеми, тествани и слабо свързани.
Той добавя мащабируемост към Node. Js сървърите са изведени на съвсем ново ниво. PostgreSQL, MongoDB и MySQL са сред поддържаните бази данни.
NestJS е разширяем, защото може да се използва с други библиотеки; гъвкав поради своята адаптивна пълноценна екосистема. И прогресивен, тъй като поддържа JavaScript функции и принципи на дизайн.
Той е основно повлиян от Angular, React и Vue и идва с вградено инжектиране на зависимости.
Характеристики:
- Лесен е за използване, научаване и овладяване.
- Безплатно е и с отворен код (Лиценз на MIT)
- Мощен интерфейс на командния ред (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. Досега съхранявах данни във временна променлива. Ето защо такава проста задача може да бъде изпълнена с помощта на манипулатори на контролер.
Въпреки това, за по-голяма, по-сложна логика, разделянето на кода и повторното използване биха били трудни. Това е, когато идват доставчиците. Можете да декларирате/създадете доставчик на върха на клас, като използвате декоратора @Injectable. След това, като използвате доставчици, можете да извършвате инжектиране на зависимости, регистриране и други задачи.
4. модули
Nestjs модулите не са глобални; вместо това те имат дълбочина.
Въпреки това, той може да бъде споделен и с всякакви други модули. Въпреки че, подобно на Angular, предлага глобални модули, по-препоръчително е да запазите услугите/контролерите в модула, където те се използват най-често в Nestjs.
NestCLI се използва за създаване на модули през повечето време и доставчиците/контролерите, генерирани в контекста на този модул, се добавят автоматично от CLI. Те са известни като функционални модули.
5. Филтри за изключения
Филтрите за изключения са манипулатори на грешки, които се извикват, когато контролер хвърли изключение. Той автоматично управлява проблема и предоставя подходящо, удобно за потребителя съобщение за грешка.
Много HttpException наследени изключения се предоставят от пакета @nestjs/common, включително NotFoundException, BadRequestException, NotAcceptableException, UnauthorizedException и много други. Можете дори да проектирате свой собствен ExceptionFilter.
6. Среден софтуер
Функция, която се извиква преди манипулатора на маршрута, се нарича междинен софтуер. Обектите на заявка и отговор, както и функцията на междинния софтуер next() в цикъла заявка-отговор на приложението, са достъпни за функциите на междинния софтуер.
Променлива, наречена next, обикновено се използва за идентифициране на следващата функция на междинния софтуер. Персонализираният междинен софтуер на Nest може да бъде внедрен в метод или клас с помощта на декоратора @Injectable().
7. Гардове
Пазачите са отговорни само за едно нещо. Тяхна отговорност е да преценят дали дадена заявка ще бъде обработена от администратора въз основа на конкретни обстоятелства (По-конкретно, дефинирана от потребителя логика).
Той е полезен за удостоверяване/упълномощаване и е препоръчителният метод в Nestjs.
Въпреки че удостоверяването/разрешенията и т.н. могат да се извършват с помощта на междинен софтуер, това не се прави в експресни или други HTTP сървъри, тъй като те нямат свързан силен контекст и нямат причина да знаят кой метод ще бъде използван за обработка на заявката.
Предимства
- Рамката е силно зависима от анотации, които се използват за създаване на всичко от крайни точки до документация на Swagger. Крайните точки са основни и подредени, а анотациите улесняват разработването като цяло.
- Лесно е да се екстернализират модули с общо предназначение и да се използва повторно код в много проекти, тъй като Nest.js е рамка, базирана на модули.
- Структурата на папките на Nest.js е значително повлияна от Angular. Когато проектирате услуга Nest, това позволява минимално време на престой.
- Компонентите имат свои собствени директории, като коренът съдържа модула на приложението и основния файл. Поради опростеността на структурата може да се обърне повече внимание на дизайна на крайните точки и техните клиенти, отколкото на структурата на приложението.
- Nest, подобно на Angular, предлага приятен инструмент за команден ред, Nestjs/cli, който е достъпен чрез Node Package Manager.
Недостатъци
- Nest има предимство по отношение на използването на TypeScript и интеграцията на Angular, но му липсва финансовата подкрепа от огромна корпорация.
- Липсата на документация представлява най-голямата заплаха за потребителите на Nest. Въпреки че рамката има отлични взаимодействия с други рамки, документацията е оскъдна и не адресира потенциални трудности.
- Nest има предимство по отношение на използването на TypeScript и Angular.
Заключение
NestJS предоставя на разработчиците огромен крак. За да започнете разработката, всичко, което трябва да направите, е създайте ново приложение и си готов. Тази рамка осигурява значителен тласък веднага, като същевременно ви помага да предприемете допълнителни етапи чрез установяване на подходяща архитектура на приложението.
Той използва авангардни методи и технологии за създаване на приложения, които са едновременно управляеми и дълготрайни. Може да се използва за свързване към GraphQL, WebSockets и конструиране на микроуслуги.
Оставете коментар