Мазмұны[Жасыру][Көрсету]
2021 жылы JavaScript ең көп қолданылатын бағдарламалау тілі болды.
Бұл технологияның тартымдылығы даусыз, оны JavaScript бағдарламалауға мүмкіндік беретін көптеген фреймворктар көруге болады.
Фронт бетінде Angular, React және Vue, сонымен қатар бірнешеуін атап өту үшін серверде Express және Next бар.
JavaScript-те қол жетімді серверлік бағдарламалауға арналған көптеген керемет шеңберлер болғандықтан, сіз Express немесе Next қолданбасын пайдаланудан гөрі, неге басқа нәрсені іздеймін деп ойлайтын шығарсыз.
Мүмкін сізге лайықты қазандықпен әзірлеу процесін жылдам бастау керек және жаңа контроллерлерді ғана емес, сонымен қатар қызметтерді қолмен қосу сізді ауыртады.
Немесе басқаруға оңай үлкен, масштабталатын бағдарламалық жасақтаманы жасағыңыз келеді. Немесе сіз жай ғана тиімдірек және ыңғайлы түрде жұмыс істегіңіз келетін шығар.
Жағдайыңызда қайсысы дұрыс екеніне қарамастан, Nest.js сіздің қажеттіліктеріңіз үшін тамаша шешім болуы мүмкін.
Бұл пост NestJS түсініктерін және практикалық тәжірибені қамтамасыз етеді.
NestJS дегеніміз не?
NestJS ашық бастапқы, кеңейтілетін және бейімделетін прогрессивті Түйін негізі болып табылады .Js серверлік жүйелерді құру, тарту және қиындату үшін негіз. Бұл қазір ең жылдам өсу қарқыны бар түйін.
Js үшін TypeScript құрылымы. NestJS масштабталатын, тексерілетін және еркін қосылған қолданбаларды жасау үшін пайдаланылады.
Ол түйінге масштабтауды қосады. 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 декораторлық тәсілді қолданады және ол JavaScript-ті де қолдайды, дегенмен негізінен Typescript-те әзірленген. Сұрау мәтінін тексеру үшін сынып тексерушісін де пайдалануға болады.
Мен жай ғана Nestjs сервер данасын жасап, ValidationPipe-ді жаһандық түрде қосамын. Құбырлар тек контроллерлерден бұрын орындалатын әдістер. Құбырларды @UsePipes декораторы арқылы әдіс/аргумент деңгейінде де қолдануға болады.
3. Провайдерлер
Провайдерлер Nestjs жүйесінің тағы бір маңызды құрамдас бөлігі болып табылады. Әзірге деректерді уақытша айнымалыда сақтадым. Сондықтан мұндай қарапайым тапсырманы Controller өңдегіштері арқылы орындауға болады.
Дегенмен, үлкенірек, күрделірек логика үшін кодты бөлу және қайта пайдалану қиын болады. Дәл осы кезде жеткізушілер келеді. @Injectable декораторын пайдалану арқылы сыныптың жоғарғы жағында провайдерді жариялауға/жасауға болады. Содан кейін провайдерлерді пайдаланып, тәуелділікті енгізуді, журналды тіркеуді және басқа тапсырмаларды орындауға болады.
4. Модульдер
Nestjs модульдері жаһандық емес; оның орнына олардың тереңдігі бар.
Дегенмен, оны кез келген басқа модульдермен де бөлісуге болады. Ол Angular сияқты жаһандық модульдерді ұсынса да, қызметтерді/контроллерлерді Nestjs-те жиі қолданылатын модульде сақтаған жөн.
NestCLI көбіне модульдерді шығару үшін пайдаланылады және сол модуль мәтінмәнінде жасалған провайдерлер/контроллерлер CLI арқылы автоматты түрде қосылады. Бұл мүмкіндік модульдері ретінде белгілі.
5. Ерекшелік сүзгілері
Ерекше жағдай сүзгілері - контроллер ерекше жағдайды шығарған кезде шақырылатын қате өңдегіштері. Ол мәселені автоматты түрде басқарады және сәйкес, пайдаланушыға ыңғайлы қате туралы хабарды береді.
Көптеген 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 және бұрыштық қолдану тұрғысынан артықшылығы бар.
қорытынды
NestJS әзірлеушілерге үлкен мүмкіндік береді. Дамуды бастау үшін сізге тек қана істеу керек жаңа қолданба жасаңыз және сіз барасыз. Бұл құрылым бірден айтарлықтай серпінді қамтамасыз етеді, сонымен қатар сәйкес қолданба архитектурасын орнату арқылы қосымша кезеңдерден өтуге көмектеседі.
Ол басқарылатын және ұзақ мерзімді қосымшаларды шығару үшін озық әдістер мен технологияларды пайдаланады. Оны GraphQL, WebSockets жүйесіне қосылу және микросервистерді құру үшін пайдалануға болады.
пікір қалдыру