ໃນປີ 2021, JavaScript ເປັນພາສາການຂຽນໂປຣແກຣມທີ່ໃຊ້ກັນຫຼາຍທີ່ສຸດ.
ການອຸທອນຂອງເທກໂນໂລຍີນີ້ແມ່ນບໍ່ສາມາດປະຕິເສດໄດ້, ດັ່ງທີ່ເຫັນໄດ້ຈາກກອບຈໍານວນຫລາຍທີ່ຊ່ວຍໃຫ້ການຂຽນໂປຼແກຼມ JavaScript.
ມີ Angular, React, ແລະ Vue ຢູ່ດ້ານຫນ້າ, ເຊັ່ນດຽວກັນກັບ Express ແລະ Next ໃນ backend, ເພື່ອກ່າວເຖິງຈໍານວນຫນ້ອຍຫນຶ່ງ.
ດ້ວຍກອບວຽກທີ່ຍອດຢ້ຽມຫຼາຍສໍາລັບການຂຽນໂປລແກລມ backend ໃນ JavaScript ທີ່ສາມາດເຂົ້າເຖິງໄດ້, ທ່ານອາດຈະຄິດວ່າເປັນຫຍັງຂ້ອຍຈຶ່ງຊອກຫາບາງສິ່ງບາງຢ່າງທີ່ແຕກຕ່າງກັນແທນທີ່ຈະພຽງແຕ່ໃຊ້ Express ຫຼື Next.
ບາງທີເຈົ້າຕ້ອງການເລີ່ມຕົ້ນຂະບວນການພັດທະນາຢ່າງໄວວາດ້ວຍຫມໍ້ຫຸງຕົ້ມທີ່ສົມຄວນ, ແລະບໍ່ພຽງແຕ່ເພີ່ມຕົວຄວບຄຸມໃຫມ່ດ້ວຍຕົນເອງເທົ່ານັ້ນ, ແຕ່ຍັງການບໍລິການເຮັດໃຫ້ທ່ານເຈັບປ່ວຍ.
ຫຼືທ່ານຕ້ອງການສ້າງຊອບແວຂະຫນາດໃຫຍ່ທີ່ສາມາດຂະຫຍາຍໄດ້ທີ່ງ່າຍດາຍໃນການຄຸ້ມຄອງ. ຫຼືບາງທີເຈົ້າຕ້ອງການເຮັດວຽກຢ່າງມີປະສິດທິພາບ ແລະສະດວກກວ່າ.
ບໍ່ວ່າອັນໃດເປັນຄວາມຈິງໃນສະຖານະການຂອງເຈົ້າ, 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, ຖືກໃຊ້.
- ການພັດທະນາແລະການຮັກສາ codebase ການເຄື່ອນໄຫວ.
- ຮອງຮັບຫຼາຍຮ້ອຍໂມດູນສະເພາະຮັງທີ່ເຮັດໃຫ້ມັນງ່າຍດາຍໃນການໂຕ້ຕອບກັບເຕັກໂນໂລຢີແລະແນວຄວາມຄິດທີ່ນິຍົມເຊັ່ນ TypeORM, Mongoose, GraphQL, ການບັນທຶກ, ການກວດສອບ, caching, WebSockets, ແລະອື່ນໆ.
ສິ່ງກໍ່ສ້າງຂອງ NestJS ແມ່ນຫຍັງ?
ອົງປະກອບການກໍ່ສ້າງຂອງແອັບພລິເຄຊັນ Nest ມີລາຍຊື່ຂ້າງລຸ່ມນີ້; ມີຄົນອື່ນ, ແຕ່ສາມອັນນີ້ແມ່ນສໍາຄັນທີ່ສຸດ. ຂໍໃຫ້ເບິ່ງພວກເຂົາຢ່າງໄວວາ.
1. ຜູ້ຄວບຄຸມ
ຜູ້ຄວບຄຸມຮັບຜິດຊອບໃນການປະມວນຜົນຄໍາຮ້ອງຂໍຂາເຂົ້າແລະຕອບສະຫນອງຕໍ່ລູກຄ້າ. ມັນໄດ້ຮັບການຮ້ອງຂໍ HTTP ໂດຍສະເພາະ, ແລະລະບົບເສັ້ນທາງກໍານົດວ່າຜູ້ຄວບຄຸມໄດ້ຮັບການຮ້ອງຂໍໃດ.
ຫຼັງຈາກນັ້ນມັນຮ່າງຄໍາຕອບທີ່ເຫມາະສົມທີ່ຈະສົ່ງອອກ. ດ້ວຍຄວາມຊ່ອຍເຫລືອຂອງຫ້ອງຮຽນແລະເຄື່ອງຕົກແຕ່ງ, ຜູ້ເກັບລວບລວມແບບງ່າຍດາຍແມ່ນຖືກສ້າງຂຶ້ນແລະຜູ້ຄວບຄຸມແຕ່ລະຄົນມີເສັ້ນທາງຂອງຕົນເອງສໍາລັບການເຮັດວຽກງານຕ່າງໆ.
2. ຜູ້ໃຫ້ບໍລິການ
ຜູ້ໃຫ້ບໍລິການແມ່ນຄວາມຄິດຫຼັກໃນ Nest. ຫ້ອງຮຽນ Nest ຫຼັກຫຼາຍອັນ — ການບໍລິການ, ຄັງເກັບມ້ຽນ, ໂຮງງານ, ຜູ້ຊ່ວຍ, ແລະອື່ນໆ – ສາມາດຖືກຈັດການເປັນຜູ້ໃຫ້ບໍລິການ.
ແນວຄິດພື້ນຖານຂອງຜູ້ໃຫ້ບໍລິການແມ່ນວ່າມັນສາມາດຖືກສີດເປັນການເພິ່ງພາອາໄສ; ນີ້ຫມາຍຄວາມວ່າວັດຖຸສາມາດສ້າງສະມາຄົມຕ່າງໆກັບກັນແລະກັນ, ແລະບົດບາດຂອງ "ສາຍ" ຕົວຢ່າງຂອງວັດຖຸສາມາດຖືກສົ່ງອອກຈາກລະບົບ Nest runtime ສ່ວນໃຫຍ່.
3. ໂມດູນ
ໂມດູນແມ່ນຫ້ອງຮຽນທີ່ມີ @Module() ອອກແບບທີ່ຈັດອົງປະກອບຂອງໂຄງສ້າງຂອງແອັບພລິເຄຊັນ. ແຕ່ລະແອັບພລິເຄຊັນມີໂມດູນຮາກທີ່ຖືກນໍາໃຊ້ເພື່ອສ້າງກາຟແອັບພລິເຄຊັນ, ເຊິ່ງຊ່ວຍແກ້ໄຂຄວາມເພິ່ງພາອາໄສແລະການໂຕ້ຕອບລະຫວ່າງຜູ້ໃຫ້ບໍລິການແລະໂມດູນ.
ຜູ້ອອກແບບນີ້ໃຫ້ຂໍ້ມູນເມຕາເດຕາກັບ Nest.js ເພື່ອລະບຸວ່າອົງປະກອບໃດ, ຕົວຄວບຄຸມ ຫຼືຊັບພະຍາກອນອື່ນໆຈະຖືກນຳໃຊ້ໃນລະຫັດແອັບພລິເຄຊັນ ແລະຮວມພວກມັນເປັນຊຸດດຽວ.
ແຕ່ລະໂມດູນມີການເກັບກໍາຄວາມສາມາດທີ່ເຊື່ອມຕໍ່ໃນບາງທາງ.
ເລີ່ມຕົ້ນດ້ວຍ NestJS
1. ການຕິດຕັ້ງ
ມາຕິດຕັ້ງ NestJS ແລະສ້າງໂຄງການກັບມັນໂດຍປະຕິບັດຕາມຂັ້ນຕອນເຫຼົ່ານີ້:
ໂຄງສ້າງໄດເລກະທໍລີຕໍ່ໄປນີ້ຈະຖືກສ້າງຂື້ນເປັນຜົນມາຈາກການນີ້:
2. ຜູ້ຄວບຄຸມ
ຕຶກອາຄານຂອງ Nest ແມ່ນຕົວຄວບຄຸມ. ເຫຼົ່ານີ້ແມ່ນສະຖານທີ່ບ່ອນທີ່ຄໍາຮ້ອງຂໍຂາເຂົ້າຈະຖືກຈັດການ. ທ່ານສາມາດກໍານົດເສັ້ນທາງເສັ້ນທາງໂດຍໃຊ້ຕົວແກ້ໄຂວິທີການ HTTP (Get, Post, Put, Delete, ແລະອື່ນໆ) decorators, ດັ່ງທີ່ເຫັນໃນລະຫັດຂ້າງລຸ່ມນີ້.
Nestjs ໃຊ້ວິທີການຕົກແຕ່ງແລະສ່ວນໃຫຍ່ແມ່ນຖືກພັດທະນາໃນ Typescript, ເຖິງແມ່ນວ່າມັນຍັງສະຫນັບສະຫນູນ JavaScript. ທ່ານຍັງສາມາດໃຊ້ຕົວ validator ຊັ້ນຮຽນເພື່ອກວດສອບເນື້ອໃນຄໍາຮ້ອງຂໍ.
ຂ້ອຍພຽງແຕ່ຈະສ້າງຕົວຢ່າງເຊີບເວີ Nestjs ແລະເພີ່ມ ValidationPipe ທົ່ວໂລກ. ທໍ່ແມ່ນພຽງແຕ່ວິທີການທີ່ປະຕິບັດກ່ອນ Controllers. ທໍ່ຍັງສາມາດຖືກນໍາໃຊ້ໃນລະດັບວິທີການ / ການໂຕ້ຖຽງໂດຍໃຊ້ @UsePipes decorator.
3. ຜູ້ໃຫ້ບໍລິການ
ຜູ້ໃຫ້ບໍລິການແມ່ນອີກອົງປະກອບທີ່ສໍາຄັນຂອງ Nestjs. ໂດຍໄກ, ຂ້ອຍກໍາລັງເກັບຂໍ້ມູນຢູ່ໃນຕົວແປຊົ່ວຄາວ. ນັ້ນແມ່ນເຫດຜົນທີ່ວ່າວຽກງານທີ່ງ່າຍດາຍດັ່ງກ່າວສາມາດສໍາເລັດໄດ້ໂດຍໃຊ້ຕົວຈັດການຄວບຄຸມ.
ຢ່າງໃດກໍຕາມ, ສໍາລັບເຫດຜົນຂະຫນາດໃຫຍ່, ສັບສົນຫຼາຍ, ການແຍກລະຫັດແລະການນໍາໃຊ້ຄືນໃຫມ່ຈະເປັນເລື່ອງຍາກ. ນີ້ແມ່ນເວລາທີ່ຜູ້ສະຫນອງເຂົ້າມາ. ທ່ານສາມາດປະກາດ / ສ້າງຜູ້ໃຫ້ບໍລິການຢູ່ເທິງຊັ້ນຮຽນໄດ້ໂດຍການໃຊ້ @Injectable decorator. ຫຼັງຈາກນັ້ນ, ການນໍາໃຊ້ຜູ້ໃຫ້ບໍລິການ, ທ່ານສາມາດເຮັດການສັກຢາການເພິ່ງພາອາໄສ, ການຕັດໄມ້, ແລະວຽກງານອື່ນໆ.
4. ໂມດູນ
ໂມດູນ Nestjs ບໍ່ແມ່ນທົ່ວໂລກ; ແທນທີ່ຈະ, ພວກເຂົາມີຄວາມເລິກ.
ຢ່າງໃດກໍ່ຕາມ, ມັນສາມາດຖືກແບ່ງປັນກັບໂມດູນອື່ນໆເຊັ່ນກັນ. ເຖິງແມ່ນວ່າມັນ, ເຊັ່ນ: Angular, ສະເຫນີ Global Modules, ມັນແນະນໍາໃຫ້ບໍລິການ / Controllers ຢູ່ໃນໂມດູນທີ່ພວກເຂົາຖືກນໍາໃຊ້ຫຼາຍທີ່ສຸດໃນ Nestjs.
NestCLI ຖືກໃຊ້ເພື່ອຜະລິດໂມດູນໃນທຸກເວລາ, ແລະຜູ້ໃຫ້ບໍລິການ/ຕົວຄວບຄຸມທີ່ສ້າງຂຶ້ນໃນບໍລິບົດຂອງໂມດູນນັ້ນຈະຖືກເພີ່ມໂດຍອັດຕະໂນມັດໂດຍ CLI. ເຫຼົ່ານີ້ແມ່ນເປັນທີ່ຮູ້ຈັກເປັນໂມດູນຄຸນນະສົມບັດ.
5. Exception Filters
ຕົວກັ່ນຕອງຂໍ້ຍົກເວັ້ນແມ່ນຕົວຈັດການຄວາມຜິດພາດທີ່ຮຽກຮ້ອງເມື່ອຕົວຄວບຄຸມຖິ້ມຂໍ້ຍົກເວັ້ນ. ມັນຈັດການບັນຫາໂດຍອັດຕະໂນມັດ ແລະສົ່ງຂໍ້ຄວາມຜິດພາດທີ່ເໝາະສົມ ແລະເປັນມິດກັບຜູ້ໃຊ້.
ຂໍ້ຍົກເວັ້ນທີ່ສືບທອດມາຈາກ HttpException ຫຼາຍອັນແມ່ນສະໜອງໃຫ້ໂດຍຊຸດ @nestjs/common, ລວມທັງ NotFoundException, BadRequestException, NotAcceptableException, UnauthorizedException, ແລະອື່ນໆ. ທ່ານຍັງສາມາດອອກແບບ ExceptionFilter ຂອງທ່ານເອງໄດ້.
6. ເຄື່ອງກາງ
ຟັງຊັນທີ່ຖືກຮຽກເອີ້ນກ່ອນຕົວຈັດການເສັ້ນທາງ ເອີ້ນວ່າຕົວກາງ. ວັດຖຸການຮ້ອງຂໍແລະການຕອບໂຕ້, ເຊັ່ນດຽວກັນກັບຟັງຊັນຕົວກາງ () ຕໍ່ໄປໃນວົງຈອນການຕອບສະຫນອງຄໍາຮ້ອງຂໍຂອງແອັບພລິເຄຊັນ, ສາມາດເຂົ້າເຖິງຟັງຊັນກາງ.
ຕົວແປທີ່ເອີ້ນວ່າຖັດໄປແມ່ນຖືກນໍາໃຊ້ໂດຍປົກກະຕິເພື່ອກໍານົດຟັງຊັນຕົວກາງຕໍ່ໄປ. Custom Nest middleware ສາມາດຖືກຈັດຕັ້ງປະຕິບັດໃນວິທີການ ຫຼື ຫ້ອງຮຽນໂດຍໃຊ້ @Injectable() decorator.
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 ໃຫ້ນັກພັດທະນາມີຂາຂຶ້ນຢ່າງຫຼວງຫຼາຍ. ເພື່ອເລີ່ມຕົ້ນການພັດທະນາ, ສິ່ງທີ່ທ່ານຕ້ອງເຮັດແມ່ນ ສ້າງແອັບຯໃຫມ່ ແລະເຈົ້າດີທີ່ຈະໄປ. ໂຄງຮ່າງການນີ້ສະຫນອງການຊຸກຍູ້ທີ່ສໍາຄັນທັນທີ, ໃນຂະນະທີ່ຍັງຊ່ວຍທ່ານໃນຂັ້ນຕອນເພີ່ມເຕີມໂດຍການສ້າງຕັ້ງສະຖາປັດຕະ app ທີ່ເຫມາະສົມ.
ມັນເຮັດໃຫ້ການນໍາໃຊ້ວິທີການແລະເຕັກໂນໂລຢີທີ່ທັນສະ ໄໝ ເພື່ອຜະລິດແອັບພລິເຄຊັນທີ່ມີທັງການຄຸ້ມຄອງແລະຍາວນານ. ມັນສາມາດຖືກນໍາໃຊ້ເພື່ອເຊື່ອມຕໍ່ກັບ GraphQL, WebSockets, ແລະການກໍ່ສ້າງ microservices.
ອອກຈາກ Reply ເປັນ