នៅឆ្នាំ 2021 JavaScript គឺជាភាសាសរសេរកម្មវិធីដែលត្រូវបានប្រើប្រាស់យ៉ាងទូលំទូលាយបំផុត។
ភាពទាក់ទាញនៃបច្ចេកវិទ្យានេះគឺមិនអាចប្រកែកបាន ដូចដែលបានឃើញដោយក្របខ័ណ្ឌជាច្រើនដែលបើកដំណើរការកម្មវិធី JavaScript ។
មាន Angular, React, និង Vue នៅផ្នែកខាងមុខ ក៏ដូចជា Express និង Next នៅលើ backend ដើម្បីនិយាយពីរបី។
ជាមួយនឹងក្របខ័ណ្ឌដ៏អស្ចារ្យជាច្រើនសម្រាប់ការសរសេរកម្មវិធីផ្នែកខាងក្រោយនៅក្នុង JavaScript ដែលអាចចូលប្រើបាន អ្នកប្រហែលជាគិតថាហេតុអ្វីបានជាខ្ញុំស្វែងរកអ្វីដែលប្លែកជាជាងគ្រាន់តែប្រើ Express ឬ Next។
ប្រហែលជាអ្នកត្រូវចាប់ផ្តើមដំណើរការអភិវឌ្ឍយ៉ាងឆាប់រហ័សជាមួយនឹងបន្ទះ boilerplate សមរម្យ ហើយការបន្ថែមឧបករណ៍បញ្ជាថ្មីដោយដៃមិនត្រឹមតែប៉ុណ្ណោះទេប៉ុន្តែថែមទាំងសេវាកម្មធ្វើឱ្យអ្នកឈឺផងដែរ។
ឬអ្នកចង់បង្កើតកម្មវិធីធំដែលអាចធ្វើមាត្រដ្ឋានបាន ដែលមានលក្ខណៈសាមញ្ញក្នុងការគ្រប់គ្រង។ ឬប្រហែលជាអ្នកគ្រាន់តែចង់ធ្វើការប្រកបដោយប្រសិទ្ធភាព និងងាយស្រួលជាង។
ដោយមិនគិតពីអ្វីដែលជាការពិតនៅក្នុងកាលៈទេសៈរបស់អ្នក Nest.js អាចជាដំណោះស្រាយដ៏ល្អឥតខ្ចោះសម្រាប់តម្រូវការរបស់អ្នក។
ការបង្ហោះនេះនឹងផ្តល់នូវការយល់ដឹងពី NestJS ក៏ដូចជាបទពិសោធន៍ប្រើប្រាស់ដៃ។
តើ NestJS ជាអ្វី?
NestJS គឺជាក្របខ័ណ្ឌ Node ដែលកំពុងរីកចម្រើន ដែលជាប្រភពបើកចំហ អាចពង្រីកបាន និងអាចសម្របបាន។ .ច ក្របខណ្ឌសម្រាប់ការកសាង ប្រព័ន្ធ backend ចូលរួម និងបញ្ហាប្រឈម។ ឥឡូវនេះវាគឺជា Node ដែលមានអត្រាកំណើនលឿនបំផុត។
ក្របខ័ណ្ឌ TypeScript សម្រាប់ js. NestJS ត្រូវបានប្រើដើម្បីបង្កើតកម្មវិធីដែលអាចធ្វើមាត្រដ្ឋាន សាកល្បងបាន និងមានការតភ្ជាប់រលុង។
វាបន្ថែមលទ្ធភាពធ្វើមាត្រដ្ឋានទៅ Node ។ ម៉ាស៊ីនមេ Js ត្រូវបានយកទៅកម្រិតថ្មីទាំងស្រុង។ PostgreSQL, MongoDB និង MySQL ស្ថិតក្នុងចំណោមមូលដ្ឋានទិន្នន័យដែលត្រូវបានគាំទ្រ។
NestJS គឺអាចពង្រីកបាន ព្រោះវាអាចត្រូវបានប្រើជាមួយបណ្ណាល័យផ្សេងៗ។ អាចបត់បែនបាន ដោយសារប្រព័ន្ធអេកូដែលអាចសម្របខ្លួនបានពេញលេញ។ និងរីកចម្រើន ដោយសារវាគាំទ្រមុខងារ JavaScript និងគោលការណ៍រចនា។
វាត្រូវបានជះឥទ្ធិពលជាចម្បងដោយ Angular, React, និង Vue ហើយភ្ជាប់មកជាមួយការបញ្ចូលក្នុងភាពអាស្រ័យ។
លក្ខណៈពិសេស
- វាសាមញ្ញក្នុងការប្រើ រៀន និងធ្វើជាម្ចាស់។
- វាឥតគិតថ្លៃនិង ប្រភពបើកចំហ (អាជ្ញាប័ណ្ណ MIT)
- ចំណុចប្រទាក់បន្ទាត់ពាក្យបញ្ជាដ៏មានឥទ្ធិពល (CLI) សម្រាប់ការបង្កើនផលិតភាព និងភាពសាមញ្ញក្នុងការអភិវឌ្ឍន៍
- កម្មវិធីតេស្តឯកតាដែលងាយស្រួលប្រើ
- TypeScript ដែលជាភាសាវាយយ៉ាងតឹងដែលជា superset នៃ JavaScript ត្រូវបានប្រើ។
- ការអភិវឌ្ឍន៍ និងថែទាំកូដមូលដ្ឋានសកម្ម។
- ការគាំទ្រសម្រាប់ម៉ូឌុលជាក់លាក់សំបុករាប់រយ ដែលធ្វើឱ្យវាសាមញ្ញក្នុងការធ្វើអន្តរកម្មជាមួយបច្ចេកវិជ្ជា និងគំនិតដ៏ពេញនិយមដូចជា TypeORM, Mongoose, GraphQL, ការកត់ត្រា, សុពលភាព, ឃ្លាំងសម្ងាត់, WebSockets និងច្រើនទៀត។
តើអ្វីទៅជាប្លុកអគាររបស់ NestJS?
ធាតុផ្សំនៃការសាងសង់កម្មវិធី Nest ត្រូវបានរាយខាងក្រោម។ មានផ្សេងទៀត ប៉ុន្តែទាំងបីនេះគឺសំខាន់ជាងគេ។ តោះមើលពួកវាឱ្យបានលឿន។
1. ឧបករណ៍បញ្ជា
អ្នកគ្រប់គ្រងទទួលបន្ទុកដំណើរការសំណើចូល និងឆ្លើយតបទៅអតិថិជន។ វាទទួលបានសំណើ HTTP ជាក់លាក់ ហើយប្រព័ន្ធកំណត់ផ្លូវកំណត់ថាតើឧបករណ៍បញ្ជាណាមួយទទួលបានសំណើណាមួយ។
បន្ទាប់មកវាព្រាងចម្លើយសមរម្យដើម្បីផ្ញើចេញ។ ដោយមានជំនួយពីថ្នាក់រៀន និងអ្នកតុបតែង អ្នកប្រមូលសាមញ្ញត្រូវបានសាងសង់ ហើយឧបករណ៍បញ្ជានីមួយៗមានផ្លូវផ្ទាល់ខ្លួនសម្រាប់ធ្វើការងារផ្សេងៗ។
អ្នកផ្តល់
អ្នកផ្តល់សេវាគឺជាគំនិតសំខាន់នៅក្នុង Nest ។ ថ្នាក់ Nest ស្នូលជាច្រើន — សេវាកម្ម ឃ្លាំង រោងចក្រ ជំនួយការ និងអ្វីៗផ្សេងទៀត - អាចត្រូវបានចាត់ចែងជាអ្នកផ្តល់សេវា។
គោលគំនិតជាមូលដ្ឋានរបស់អ្នកផ្តល់សេវាគឺថាវាអាចត្រូវបានចាក់ថាជាការពឹងផ្អែកមួយ; នេះបញ្ជាក់ថាវត្ថុអាចបង្កើតទំនាក់ទំនងផ្សេងៗជាមួយគ្នាបាន ហើយតួនាទីនៃ "ការភ្ជាប់ខ្សែ" នៃវត្ថុអាចត្រូវបានប្រភពចេញជាចម្បងទៅនឹងប្រព័ន្ធ Nest runtime ។
3 ។ ម៉ូឌុល។
ម៉ូឌុលគឺជាថ្នាក់មួយដែលមាន @Module() decorator ដែលរៀបចំសមាសធាតុនៃរចនាសម្ព័ន្ធរបស់កម្មវិធី។ កម្មវិធីនីមួយៗមានម៉ូឌុល root ដែលត្រូវបានប្រើប្រាស់ដើម្បីបង្កើតក្រាហ្វកម្មវិធី ដែលជួយដោះស្រាយបន្ថែមទៀតនូវភាពអាស្រ័យ និងអន្តរកម្មរវាងអ្នកផ្តល់សេវា និងម៉ូឌុល។
អ្នកតុបតែងនេះផ្តល់ទិន្នន័យមេតាទៅ Nest.js ដើម្បីកំណត់អត្តសញ្ញាណសមាសធាតុ ឧបករណ៍បញ្ជា ឬធនធានផ្សេងទៀតនឹងត្រូវបានប្រើប្រាស់នៅក្នុងកូដកម្មវិធី ហើយបញ្ចូលពួកវាទៅក្នុងសំណុំតែមួយ។
ម៉ូឌុលនីមួយៗមានបណ្តុំនៃសមត្ថភាពដែលត្រូវបានតភ្ជាប់តាមមធ្យោបាយមួយចំនួន។
ចាប់ផ្តើមជាមួយ NestJS
1 ។ ការដំឡើង
តោះដំឡើង NestJS ហើយបង្កើតគម្រោងជាមួយវាដោយធ្វើតាមជំហានទាំងនេះ៖
រចនាសម្ព័ន្ធថតខាងក្រោមនឹងត្រូវបានបង្កើតជាលទ្ធផលនៃរឿងនេះ៖
2. ឧបករណ៍បញ្ជា
ប្លុកអាគាររបស់ Nest គឺជាឧបករណ៍បញ្ជា។ ទាំងនេះគឺជាទីតាំងដែលសំណើចូលនឹងត្រូវបានដោះស្រាយ។ អ្នកអាចបញ្ជាក់ផ្លូវផ្លូវដោយប្រើកម្មវិធីកែប្រែវិធីសាស្ត្រ HTTP (Get, Post, Put, Delete, and so on) decorators ដូចដែលបានឃើញនៅក្នុងកូដខាងក្រោម។
Nestjs ប្រើវិធីសាស្រ្តអ្នកតុបតែង ហើយភាគច្រើនត្រូវបានបង្កើតឡើងក្នុង Typescript ទោះបីជាវាគាំទ្រ JavaScript ក៏ដោយ។ អ្នកក៏អាចប្រើ class validator ដើម្បីធ្វើ validate the request body ផងដែរ។
ខ្ញុំគ្រាន់តែនឹងបង្កើតឧទាហរណ៍ម៉ាស៊ីនមេ Nestjs ហើយបន្ថែម ValidationPipe ជាសកល។ បំពង់គឺគ្រាន់តែជាវិធីសាស្រ្តដែលប្រតិបត្តិមុនពេល Controllers ។ បំពង់ក៏អាចត្រូវបានអនុវត្តនៅកម្រិតវិធីសាស្រ្ត/អាគុយម៉ង់ដោយប្រើ @UsePipes decorator ។
អ្នកផ្តល់
អ្នកផ្តល់សេវាគឺជាសមាសធាតុសំខាន់មួយទៀតរបស់ Nestjs ។ មកដល់ពេលនេះ ខ្ញុំកំពុងរក្សាទុកទិន្នន័យនៅក្នុងអថេរបណ្តោះអាសន្ន។ នោះហើយជាមូលហេតុដែលកិច្ចការសាមញ្ញបែបនេះអាចសម្រេចបានដោយប្រើឧបករណ៍គ្រប់គ្រងឧបករណ៍បញ្ជា។
ទោះជាយ៉ាងណាក៏ដោយ សម្រាប់តក្កវិជ្ជាដែលកាន់តែធំ និងស្មុគស្មាញ ការបំបែកកូដ និងការប្រើប្រាស់ឡើងវិញនឹងពិបាក។ នេះគឺជាពេលដែលអ្នកផ្គត់ផ្គង់ចូលមក។ អ្នកអាចប្រកាស/បង្កើតអ្នកផ្តល់សេវានៅផ្នែកខាងលើនៃថ្នាក់ដោយប្រើ @Injectable decorator។ បន្ទាប់មក ដោយប្រើអ្នកផ្តល់សេវា អ្នកអាចធ្វើការចាក់ថ្នាំដោយអាស្រ័យ ការកាប់ឈើ និងកិច្ចការផ្សេងៗទៀត។
4 ។ ម៉ូឌុល។
ម៉ូឌុល Nestjs មិនមានលក្ខណៈសកលទេ។ ផ្ទុយទៅវិញពួកគេមានជម្រៅ។
ទោះយ៉ាងណាក៏ដោយ វាអាចត្រូវបានចែករំលែកជាមួយម៉ូឌុលផ្សេងទៀតផងដែរ។ ទោះបីជាវាដូចជា Angular ផ្តល់ម៉ូឌុលសកលក៏ដោយ វាជាការល្អក្នុងការរក្សាសេវាកម្ម/ឧបករណ៍បញ្ជានៅក្នុងម៉ូឌុលដែលពួកគេត្រូវបានគេប្រើញឹកញាប់បំផុតនៅក្នុង Nestjs ។
NestCLI ត្រូវបានប្រើដើម្បីផលិតម៉ូឌុលភាគច្រើន ហើយអ្នកផ្តល់សេវា/ឧបករណ៍បញ្ជាដែលបានបង្កើតនៅក្នុងបរិបទរបស់ម៉ូឌុលនោះត្រូវបានបន្ថែមដោយស្វ័យប្រវត្តិដោយ CLI ។ ទាំងនេះត្រូវបានគេស្គាល់ថាជាម៉ូឌុលមុខងារ។
5. តម្រងករណីលើកលែង
តម្រងការលើកលែងគឺជាឧបករណ៍ដោះស្រាយកំហុសដែលត្រូវបានហៅនៅពេលដែលឧបករណ៍បញ្ជាបោះចោលករណីលើកលែងមួយ។ វាគ្រប់គ្រងបញ្ហាដោយស្វ័យប្រវត្តិ និងផ្តល់សារកំហុសដែលសមរម្យ និងងាយស្រួលប្រើ។
ករណីលើកលែងដែលទទួលមរតក HttpException ជាច្រើនត្រូវបានផ្តល់ដោយកញ្ចប់ @nestjs/common រួមទាំង NotFoundException, BadRequestException, NotAcceptableException, UnauthorizedException និងផ្សេងៗទៀត។ អ្នកថែមទាំងអាចរចនា ExceptionFilter ផ្ទាល់ខ្លួនរបស់អ្នក។
6. គ្រឿងកណ្តាល
មុខងារដែលត្រូវបានហៅនៅពីមុខកម្មវិធីដោះស្រាយផ្លូវត្រូវបានគេហៅថា Middleware ។ វត្ថុនៃសំណើ និងការឆ្លើយតប ក៏ដូចជាមុខងារ Middleware បន្ទាប់ () នៅក្នុងវដ្តនៃការឆ្លើយតបសំណើរបស់កម្មវិធី អាចចូលដំណើរការបានចំពោះមុខងារ Middleware ។
អថេរដែលហៅថា បន្ទាប់ត្រូវបានប្រើជាធម្មតាដើម្បីកំណត់អត្តសញ្ញាណមុខងារឧបករណ៍កណ្តាលបន្ទាប់។ Custom Nest middleware អាចត្រូវបានអនុវត្តនៅក្នុង method ឬ class ដោយប្រើ @Injectable() decorator។
7. ឆ្មាំ
ឆ្មាំទទួលខុសត្រូវចំពោះរឿងមួយ។ វាជាទំនួលខុសត្រូវរបស់ពួកគេក្នុងការវាយតម្លៃថាតើសំណើនឹងត្រូវបានដំណើរការដោយឧបករណ៍បញ្ជាដោយផ្អែកលើកាលៈទេសៈជាក់លាក់ (ជាពិសេស តក្កវិជ្ជាកំណត់ដោយអ្នកប្រើប្រាស់)។
វាមានប្រយោជន៍សម្រាប់ការផ្ទៀងផ្ទាត់/ការអនុញ្ញាត និងជាវិធីសាស្ត្រដែលបានណែនាំនៅក្នុង Nestjs។
ទោះបីជាការផ្ទៀងផ្ទាត់/ការអនុញ្ញាតជាដើម អាចត្រូវបានធ្វើដោយប្រើឧបករណ៍កណ្តាលក៏ដោយ វាមិនត្រូវបានធ្វើនៅក្នុងម៉ាស៊ីនមេ HTTP រហ័ស ឬ HTTP ផ្សេងទៀតទេ ដោយសារពួកគេមិនមានបរិបទរឹងមាំដែលពាក់ព័ន្ធ ហើយមិនមានហេតុផលដើម្បីដឹងថាវិធីសាស្ត្រណាមួយនឹងត្រូវប្រើដើម្បីដំណើរការសំណើនោះទេ។
គុណសម្បត្តិ
- ក្របខ័ណ្ឌនេះពឹងផ្អែកយ៉ាងខ្លាំងលើចំណារពន្យល់ ដែលត្រូវបានប្រើដើម្បីផលិតអ្វីៗពីចំណុចបញ្ចប់រហូតដល់ឯកសារ Swagger ។ ចំណុចបញ្ចប់គឺជាមូលដ្ឋាន និងស្អាត ហើយចំណារពន្យល់ធ្វើឱ្យការអភិវឌ្ឍន៍កាន់តែងាយស្រួលជាទូទៅ។
- វាសាមញ្ញណាស់ក្នុងការកំណត់ខាងក្រៅម៉ូឌុលគោលបំណងទូទៅ និងប្រើកូដឡើងវិញនៅក្នុងគម្រោងជាច្រើន ដោយសារ Nest.js គឺជាក្របខ័ណ្ឌផ្អែកលើម៉ូឌុល។
- រចនាសម្ព័ន្ធថតរបស់ Nest.js ត្រូវបានជះឥទ្ធិពលយ៉ាងខ្លាំងដោយ Angular ។ នៅពេលរចនាសេវាកម្ម Nest នេះអនុញ្ញាតឱ្យមានពេលវេលារងចាំតិចតួចបំផុត។
- សមាសធាតុមានថតផ្ទាល់របស់ពួកគេ ដោយឫសមានម៉ូឌុលកម្មវិធី និងឯកសារមេ។ ដោយសារតែភាពសាមញ្ញនៃរចនាសម្ព័ន្ធ ការយកចិត្តទុកដាក់បន្ថែមទៀតអាចត្រូវបានដាក់ទៅការរចនានៃចំណុចបញ្ចប់ និងអតិថិជនរបស់ពួកគេជាជាងរចនាសម្ព័ន្ធនៃកម្មវិធី។
- Nest ដូចជា Angular ផ្តល់នូវឧបករណ៍បន្ទាត់ពាក្យបញ្ជាដ៏ស្រស់ស្អាត Nestjs/cli ដែលអាចរកបានតាមរយៈកម្មវិធីគ្រប់គ្រងកញ្ចប់កញ្ចប់។
គុណវិបត្តិ
- Nest មានអត្ថប្រយោជន៍មួយទាក់ទងនឹងការប្រើប្រាស់ TypeScript និងការរួមបញ្ចូល Angular ប៉ុន្តែវាខ្វះការគាំទ្រផ្នែកហិរញ្ញវត្ថុពីសាជីវកម្មដ៏ធំមួយ។
- កង្វះឯកសារបង្កការគំរាមកំហែងខ្លាំងបំផុតចំពោះអ្នកប្រើប្រាស់ Nest ។ ទោះបីជាក្របខណ្ឌមានអន្តរកម្មដ៏ល្អជាមួយក្របខណ្ឌផ្សេងទៀតក៏ដោយ ឯកសារមានលក្ខណៈតូចតាច ហើយមិនដោះស្រាយការលំបាកដែលអាចកើតមានណាមួយឡើយ។
- Nest មានអត្ថប្រយោជន៍មួយទាក់ទងនឹងការប្រើប្រាស់ TypeScript និង Angular។
សន្និដ្ឋាន
NestJS ផ្តល់ឱ្យអ្នកអភិវឌ្ឍន៍នូវជើងដ៏ធំ។ ដើម្បីចាប់ផ្តើមការអភិវឌ្ឍន៍ អ្វីដែលអ្នកត្រូវធ្វើគឺ បង្កើតកម្មវិធីថ្មី ហើយអ្នកល្អណាស់ក្នុងការទៅ។ ក្របខ័ណ្ឌនេះផ្តល់នូវការជំរុញដ៏សំខាន់ភ្លាមៗ ខណៈពេលដែលជួយអ្នកក្នុងការទទួលយកដំណាក់កាលបន្ថែមដោយបង្កើតស្ថាបត្យកម្មកម្មវិធីសមរម្យ។
វាប្រើប្រាស់វិធីសាស្រ្ត និងបច្ចេកវិទ្យាទំនើបៗ ដើម្បីផលិតកម្មវិធីដែលអាចគ្រប់គ្រងបាន និងប្រើប្រាស់បានយូរ។ វាអាចត្រូវបានប្រើដើម្បីភ្ជាប់ទៅ GraphQL, WebSockets និងបង្កើត microservices ។
សូមផ្ដល់យោបល់