မာတိကာ[ဖျောက်][ရှိုး]
2021 ခုနှစ်တွင် JavaScript သည် အသုံးအများဆုံး ပရိုဂရမ်းမင်းဘာသာစကားဖြစ်သည်။
JavaScript ပရိုဂရမ်းမင်းကို ဖွင့်ပေးသည့် များပြားလှသော framework အများအပြားဖြင့် မြင်တွေ့ရသည့်အတိုင်း ဤနည်းပညာ၏ ဆွဲဆောင်မှုမှာ ငြင်းမရနိုင်ပါ။
အနည်းငယ်ဖော်ပြရန် အရှေ့ဘက်စွန်းတွင် Angular၊ React နှင့် Vue နှင့် နောက်ကျောတွင် Express နှင့် Next ရှိသည်။
JavaScript ကိုအသုံးပြု၍ရနိုင်သော backend programming အတွက် အလွန်ကောင်းမွန်သော framework အများအပြားဖြင့်၊ Express သို့မဟုတ် Next ကို ရိုးရိုးရှင်းရှင်းသုံးခြင်းထက် ကွဲပြားသောအရာကို ကျွန်ုပ်အဘယ်ကြောင့် ရှာဖွေရမည်ဟု သင်တွေးနေပေမည်။
သင့်တင့်လျောက်ပတ်သောဘွိုင်လာပြားဖြင့် ဖွံ့ဖြိုးတိုးတက်ရေးလုပ်ငန်းစဉ်ကို လျင်မြန်စွာစတင်ရန် လိုအပ်ပြီး ထိန်းချုပ်ကိရိယာအသစ်များသာမက ဝန်ဆောင်မှုများကို ကိုယ်တိုင်ထည့်သွင်းခြင်းသည် သင့်အား ဖျားနာစေပါသည်။
သို့မဟုတ် စီမံခန့်ခွဲရန် ရိုးရှင်းသော အရွယ်အစားကြီးမား၍ ဆော့ဖ်ဝဲကို သင်ဖန်တီးလိုပါသလား။ ဒါမှမဟုတ် ပိုထိရောက်ပြီး အဆင်ပြေတဲ့ပုံစံနဲ့ အလုပ်လုပ်ချင်ရုံပါပဲ။
သင့်အခြေအနေတွင် မည်သည့်အရာက မှန်ကန်သည်ဖြစ်စေ Nest.js သည် သင့်လိုအပ်ချက်များအတွက် ပြီးပြည့်စုံသော ဖြေရှင်းချက်ဖြစ်နိုင်ပါသည်။
ဤပို့စ်သည် NestJS ထိုးထွင်းသိမြင်မှုအပြင် လက်ဆင့်ကမ်းခြင်းအတွေ့အကြုံကို ပေးပါလိမ့်မည်။
NestJS ဆိုတာဘာလဲ။
NestJS သည် open-source၊ တိုးချဲ့နိုင်သော၊ လိုက်လျောညီထွေဖြစ်စေနိုင်သော တိုးတက်သော Node framework တစ်ခုဖြစ်သည်။ .js တည်ဆောက်ခြင်း၊ ဆွဲဆောင်မှုနှင့် စိန်ခေါ်မှုရှိသော နောက်ခံစနစ်များအတွက် မူဘောင်။ ယခုအခါ ၎င်းသည် အလျင်မြန်ဆုံးတိုးတက်မှုနှုန်းရှိသော Node ဖြစ်သည်။
js အတွက် TypeScript framework NestJS ကို အတိုင်းအတာ ချဲ့ထွင်နိုင်သော၊ စမ်းသပ်နိုင်သော၊ ပေါ့လျော့စွာ ချိတ်ဆက်နိုင်သော အပလီကေးရှင်းများ ဖန်တီးရန် အသုံးပြုပါသည်။
၎င်းသည် Node သို့ scalability ကို ထပ်လောင်းသည်။ Js ဆာဗာများကို အဆင့်အသစ်သို့ ခေါ်ဆောင်သွားပါပြီ။ PostgreSQL၊ MongoDB နှင့် MySQL တို့သည် ပံ့ပိုးထားသော ဒေတာဘေ့စ်များထဲတွင် ပါဝင်ပါသည်။
NestJS သည် အခြားသော စာကြည့်တိုက်များ နှင့် အသုံးပြုနိုင်သောကြောင့် သက်တမ်းတိုးနိုင်သည်။ ၎င်း၏ လိုက်လျောညီထွေရှိသော အပြည့်အ၀ ဂေဟစနစ်ကြောင့် ပြောင်းလွယ်ပြင်လွယ်။ ၎င်းသည် JavaScript အင်္ဂါရပ်များနှင့် ဒီဇိုင်းမူများကို ပံ့ပိုးပေးသောကြောင့် တိုးတက်မှုရှိသည်။
၎င်းကို Angular၊ React နှင့် Vue တို့မှ အဓိကလွှမ်းမိုးထားပြီး built-in မှီခိုမှုထိုးဆေးဖြင့် ပါရှိသည်။
အင်္ဂါရပ်များ
- အသုံးပြုရန်၊ သင်ယူရန်နှင့် ကျွမ်းကျင်ရန် ရိုးရှင်းပါသည်။
- ၎င်းသည်အခမဲ့နှင့်ဖြစ်သည်။ open-source (MIT လိုင်စင်)
- ကုန်ထုတ်စွမ်းအားနှင့် ဖွံ့ဖြိုးတိုးတက်မှု ရိုးရှင်းမှုအတွက် အစွမ်းထက်သော Command Line Interface (CLI)
- အသုံးပြုရလွယ်ကူသော ယူနစ်စမ်းသပ်ခြင်းပရိုဂရမ်များ
- JavaScript ၏ superset တစ်ခုဖြစ်သည့် တင်းကျပ်စွာရိုက်ထားသော ဘာသာစကား TypeScript ကို အသုံးပြုထားသည်။
- အသက်ဝင်သောကုဒ်ဘေ့စ်တစ်ခု၏ ဖွံ့ဖြိုးတိုးတက်မှုနှင့် ထိန်းသိမ်းမှု။
- TypeORM၊ Mongoose၊ GraphQL၊ မှတ်တမ်းသွင်းခြင်း၊ တရားဝင်ခြင်း၊ ကက်ရှ်၊ WebSockets နှင့် အခြားအရာများကဲ့သို့ ရေပန်းစားသော နည်းပညာများနှင့် အိုင်ဒီယာများနှင့် ရိုးရှင်းလွယ်ကူစွာ ထိတွေ့နိုင်ရန် ရာနှင့်ချီသော အသိုက်သီးသန့် မော်ဂျူးများအတွက် ပံ့ပိုးမှု။
NestJS ၏ တည်ဆောက်မှု တုံးများသည် အဘယ်နည်း။
Nest အပလီကေးရှင်းများ၏ တည်ဆောက်ရေး အစိတ်အပိုင်းများကို အောက်တွင် ဖော်ပြထားပါသည်။ တခြားဟာတွေရှိပေမယ့် ဒီသုံးခုက အထူးခြားဆုံးပါ။ အဲဒါတွေကို မြန်မြန်ကြည့်ရအောင်။
1 ။ controllers
Controller များသည် ဝင်လာသော တောင်းဆိုချက်များကို စီမံဆောင်ရွက်ပေးပြီး ဖောက်သည်များကို တုံ့ပြန်ရန် တာဝန်ယူပါသည်။ ၎င်းသည် သီးခြား HTTP တောင်းဆိုမှုများကို လက်ခံရရှိပြီး လမ်းကြောင်းစနစ်သည် မည်သည့် controller မှ မည်သည့်တောင်းဆိုမှုကို ရရှိသည်ကို ဆုံးဖြတ်သည်။
အဲဒါပြီးရင် သင့်တော်တဲ့ အဖြေတစ်ခုကို ထုတ်ပေးဖို့ ရေးဆွဲတယ်။ အတန်းများနှင့် အလှဆင်သူများ၏အကူအညီဖြင့်၊ ရိုးရှင်းသောစုဆောင်းသူအား တည်ဆောက်ထားပြီး ထိန်းချုပ်ကိရိယာတစ်ခုစီတွင် အလုပ်အမျိုးမျိုးကိုလုပ်ဆောင်ရန် ၎င်း၏ကိုယ်ပိုင်လမ်းကြောင်းများရှိသည်။
2. ပံ့ပိုးပေးသူများ
ဝန်ဆောင်မှုပေးသူများသည် Nest ရှိ အဓိက အကြံဉာဏ်ဖြစ်သည်။ ပင်မ Nest အတန်းအစား အများအပြား—ဝန်ဆောင်မှုများ၊ သိုလှောင်ရုံများ၊ စက်ရုံများ၊ ကူညီပေးသူများနှင့် အခြားအရာများ – ဝန်ဆောင်မှုပေးသူများအဖြစ် ကိုင်တွယ်နိုင်ပါသည်။
ပံ့ပိုးပေးသူ၏ အခြေခံသဘောတရားမှာ ၎င်းကို မှီခိုမှုတစ်ခုအဖြစ် ထိုးသွင်းနိုင်သည်။ ယင်းက အရာဝတ္ထုများသည် တစ်ခုနှင့်တစ်ခု အမျိုးမျိုးသော ဆက်စပ်မှုများ ဖွဲ့စည်းနိုင်သည်ဟု ဆိုလိုပြီး အရာဝတ္ထုများ၏ "ဝါယာကြိုးများ" ၏ အခန်းကဏ္ဍကို Nest runtime စနစ်တွင် အဓိကအားဖြင့် ပြင်ပမှ အရင်းအမြစ်အဖြစ် ထုတ်ပေးနိုင်သည်။
၁၉
မော်ဂျူးသည် အပလီကေးရှင်း၏ ဖွဲ့စည်းပုံ၏ အစိတ်အပိုင်းများကို စီစဉ်ပေးသည့် @Module() အလှဆင်ပေးသည့် အတန်းဖြစ်သည်။ အပလီကေးရှင်းတစ်ခုစီတွင် အပလီကေးရှင်းဂရပ်ဖ်ကိုတည်ဆောက်ရန်အတွက် အသုံးပြုသည့် root module တစ်ခုရှိပြီး၊ ၎င်းသည် ပံ့ပိုးသူနှင့် module အကြား မှီခိုမှုနှင့် အပြန်အလှန်တုံ့ပြန်မှုများကို ဖြေရှင်းပေးသည်။
ဤအလှဆင်သူသည် မည်သည့်အစိတ်အပိုင်းများ၊ ထိန်းချုပ်ကိရိယာများ သို့မဟုတ် အခြားအရင်းအမြစ်များကို အပလီကေးရှင်းကုဒ်တွင် အသုံးပြုမည်ကို ခွဲခြားသိရှိနိုင်စေရန်အတွက် မက်တာဒေတာကို Nest.js အား ပေးပါသည်။
မော်ဂျူးတစ်ခုစီတွင် တစ်နည်းနည်းဖြင့် ချိတ်ဆက်ထားသော စွမ်းရည်များ စုစည်းမှုရှိသည်။
NestJS ဖြင့် စတင်ခြင်း။
1 ။ installation
NestJS ကို ထည့်သွင်းပြီး အောက်ပါအဆင့်များကို လိုက်နာခြင်းဖြင့် ၎င်းနှင့် ပရောဂျက်တစ်ခု ပြုလုပ်ကြပါစို့။
ဤရလဒ်ကြောင့် အောက်ပါလမ်းညွှန်ဖွဲ့စည်းပုံအား ဖန်တီးလိမ့်မည်-
2 ။ controllers
Nest ၏ ဆောက်လုပ်ရေးလုပ်ကွက်များသည် ထိန်းချုပ်သူများဖြစ်သည်။ ဤနေရာများသည် အဝင်တောင်းဆိုမှုများကို ကိုင်တွယ်မည့်နေရာများဖြစ်သည်။ အောက်ပါကုဒ်တွင်တွေ့ရသည့်အတိုင်း အလှဆင်သူများ (Get၊ Post၊ Put၊ Delete စသည်တို့) ကို အသုံးပြု၍ လမ်းကြောင်းလမ်းကြောင်းကို သတ်မှတ်နိုင်သည်။
Nestjs သည် အလှဆင်ကိရိယာကို အသုံးပြုထားပြီး JavaScript ကိုလည်း ပံ့ပိုးပေးသော်လည်း Typescript တွင် အများစုကို ဖန်တီးထားသည်။ တောင်းဆိုချက်ကိုယ်ထည်ကို မှန်ကန်ကြောင်း အတည်ပြုရန် class validator ကို အသုံးပြုနိုင်သည်။
Nestjs server instance တစ်ခုဖန်တီးပြီး ValidationPipe ကို တစ်ကမ္ဘာလုံးမှာ ပေါင်းထည့်တော့မယ်။ ပိုက်များသည် Controllers များရှေ့တွင် လုပ်ဆောင်သည့် နည်းလမ်းများသာဖြစ်သည်။ @UsePipes အလှဆင်ကိရိယာကို အသုံးပြု၍ နည်းလမ်း/အငြင်းအခုံအဆင့်တွင် ပိုက်များကို အသုံးပြုနိုင်သည်။
3. ပံ့ပိုးပေးသူများ
ဝန်ဆောင်မှုပေးသူများသည် Nestjs ၏ နောက်ထပ်အရေးကြီးသော အစိတ်အပိုင်းများဖြစ်သည်။ အခုချိန်ထိတော့ ယာယီကိန်းရှင်တစ်ခုထဲမှာ ဒေတာကို သိမ်းဆည်းထားပါတယ်။ ထို့ကြောင့် Controller handlers များကို အသုံးပြု၍ ဤရိုးရှင်းသောလုပ်ငန်းကို ပြီးမြောက်စေနိုင်ပါသည်။
သို့သော် ပိုကြီး၊ ပိုရှုပ်ထွေးသော logic အတွက်၊ ကုဒ်ကို ပိုင်းခြားပြီး ပြန်သုံးရန် ခက်ခဲပါလိမ့်မည်။ ပေးသွင်းသူများဝင်လာသည့်အခါတွင်၊ သင်သည် @Injectable decorator ကို အသုံးပြု၍ အတန်းတစ်ခု၏ထိပ်တွင် ပံ့ပိုးပေးသူအား ကြေညာ/ဖန်တီးနိုင်သည်။ ထို့နောက် ပံ့ပိုးပေးသူများကို အသုံးပြု၍ မှီခိုအားထားဆေးထိုးခြင်း၊ သစ်ခုတ်ခြင်းနှင့် အခြားအလုပ်များကို လုပ်ဆောင်နိုင်သည်။
၁၉
Nestjs module များသည် global မဟုတ်ပါ။ အဲဒီအစား၊ သူတို့မှာ အနက်ရှိတယ်။
သို့သော်လည်း ၎င်းကို အခြားသော module များနှင့်လည်း မျှဝေနိုင်ပါသည်။ Angular ကဲ့သို့၊ Global Modules ကို ပေးဆောင်သော်လည်း Nestjs တွင် အသုံးအများဆုံးသော module တွင် Services/Controller များကို ထားရှိရန် ပို၍အကြံပြုလိုပါသည်။
NestCLI ကို အချိန်အများစုတွင် မော်ဂျူးများ ထုတ်လုပ်ရန် အသုံးပြုပြီး ထို module ၏ ဆက်စပ်မှုတွင် ထုတ်ပေးသော ပံ့ပိုးပေးသူများ/ထိန်းချုပ်သူများကို CLI မှ အလိုအလျောက် ထည့်သွင်းပါသည်။ ဒါတွေကို feature modules လို့ ခေါ်တယ်။
5. ခြွင်းချက် စစ်ထုတ်မှုများ
Exception Filters များသည် Controller မှခြွင်းချက်တစ်ခုအား ထုတ်သောအခါတွင် ခေါ်ဆိုသော Error handlers များဖြစ်သည်။ ၎င်းသည် ပြဿနာကို အလိုအလျောက် စီမံခန့်ခွဲပြီး သင့်လျော်သော၊ အသုံးပြုရလွယ်ကူသော အမှားသတင်းကို ပေးပို့ပါသည်။
NotFoundException၊ BadRequestException၊ NotAcceptableException၊ UnauthorizedException နှင့် အခြားများစွာသော အခြားအစီအစဥ်များစွာ အပါအဝင် HttpException အမွေဆက်ခံထားသောခြွင်းချက်များကို @nestjs/common မှ ပံ့ပိုးပေးပါသည်။ သင်သည်သင်၏ကိုယ်ပိုင် ExceptionFilter ကိုပင်ဒီဇိုင်းဆွဲနိုင်သည်။
6. Middleware
လမ်းကြောင်းကိုင်တွယ်သူရှေ့တွင် ခေါ်ဝေါ်သည့် လုပ်ဆောင်ချက်ကို မစ်ဒဲဝဲ ဟုခေါ်သည်။ တောင်းဆိုချက်နှင့် တုံ့ပြန်မှုအရာဝတ္ထုများအပြင် အပလီကေးရှင်း၏ တောင်းဆိုချက်-တုံ့ပြန်မှုစက်ဝန်းရှိ နောက်() အလယ်တန်းဆော့ဖ်ဝဲလုပ်ဆောင်ချက်များသည် မစ်ဒဲဝဲလုပ်ဆောင်ချက်များကို အသုံးပြုနိုင်သည်။
Next ဟုခေါ်သော ကိန်းရှင်ကို နောက်တစ်ခု အလယ်တန်းဆော့ဖ်ဝဲလုပ်ဆောင်ချက်ကို ခွဲခြားသတ်မှတ်ရန် ပုံမှန်အားဖြင့် အသုံးပြုသည်။ စိတ်ကြိုက် Nest အလယ်တန်းဆော့ဖ်ဝဲကို @Injectable() အလှဆင်ကိရိယာကို အသုံးပြု၍ နည်းလမ်းတစ်ခု သို့မဟုတ် အတန်းတစ်ခုတွင် အကောင်အထည်ဖော်နိုင်သည်။
7. အစောင့်များ
အစောင့်များသည် အရာတစ်ခုအတွက်သာ တာဝန်ရှိသည်။ တိကျသောအခြေအနေများ (အထူးသဖြင့်၊ အသုံးပြုသူသတ်မှတ်ထားသော ယုတ္တိဗေဒ) ကိုအခြေခံ၍ ထိန်းချုပ်ကိရိယာမှ တောင်းဆိုမှုကို လုပ်ဆောင်မည်၊ မလုပ်ဆောင်မည်ကို အကဲဖြတ်ရန်မှာ ၎င်းတို့၏တာဝန်ဖြစ်သည်။
၎င်းသည် အထောက်အထားစိစစ်ခြင်း/ခွင့်ပြုချက်အတွက် အထောက်အကူဖြစ်ပြီး Nestjs တွင် အကြံပြုထားသည့်နည်းလမ်းဖြစ်သည်။
အထောက်အထားစိစစ်ခြင်း/ခွင့်ပြုချက်များ စသည်ဖြင့်၊ အလယ်တန်းဆော့ဖ်ဝဲကို အသုံးပြု၍ လုပ်ဆောင်နိုင်သော်လည်း ၎င်းတို့တွင် ဆက်စပ်ခိုင်လုံသော ဆက်စပ်အကြောင်းအရာမရှိသဖြင့် ၎င်းတို့တွင် မည်သည့်နည်းလမ်းကို အသုံးပြုမည်ကို မသိသောကြောင့် ၎င်းကို အမြန် သို့မဟုတ် အခြား HTTP ဆာဗာများတွင် လုပ်ဆောင်မည်မဟုတ်ပါ။
အားသာချက်များ
- မူဘောင်သည် အဆုံးမှတ်များမှ Swagger စာရွက်စာတမ်းများအထိ မည်သည့်အရာမဆို ထုတ်လုပ်ရန် အသုံးပြုသည့် မှတ်ချက်များပေါ်တွင် မှီခိုနေရပါသည်။ အဆုံးမှတ်များသည် အခြေခံနှင့် သပ်ရပ်ပြီး မှတ်ချက်များသည် ယေဘုယျအားဖြင့် ဖွံ့ဖြိုးတိုးတက်မှုကို ပိုမိုလွယ်ကူစေသည်။
- Nest.js သည် မော်ဂျူးအခြေခံမူဘောင်ဖြစ်သောကြောင့် ပရောဂျက်များစွာတွင် ယေဘူယျရည်ရွယ်ချက်ဖြင့် ကုဒ်ကို ပြင်ပသို့ထုတ်ပြီး ပြန်သုံးရန် ရိုးရှင်းပါသည်။
- Nest.js ၏ဖိုဒါဖွဲ့စည်းပုံသည် Angular မှသိသိသာသာလွှမ်းမိုးထားသည်။ Nest ဝန်ဆောင်မှုကို ဒီဇိုင်းဆွဲသည့်အခါ၊ ၎င်းသည် စက်ရပ်ချိန် အနည်းဆုံးဖြစ်စေသည်။
- အစိတ်အပိုင်းများတွင် အပလီကေးရှင်း မော်ဂျူးနှင့် ပင်မဖိုင်တို့ ပါ၀င်သော root ဖြင့် ၎င်းတို့၏ ကိုယ်ပိုင်လမ်းညွှန်များ ရှိသည်။ ဖွဲ့စည်းတည်ဆောက်ပုံ၏ ရိုးရှင်းမှုကြောင့်၊ အပလီကေးရှင်း၏ဖွဲ့စည်းပုံထက် အဆုံးမှတ်များနှင့် ၎င်းတို့၏ဖောက်သည်များ၏ ဒီဇိုင်းကို ပိုမိုအာရုံစိုက်နိုင်သည်။
- Angular ကဲ့သို့ Nest သည် Node Package Manager မှတဆင့် ရရှိနိုင်သော ကောင်းမွန်သော command-line tool၊ Nestjs/cli ကို ပေးပါသည်။
အားနည်းချက်များ
- Nest သည် TypeScript အသုံးပြုမှုနှင့် Angular ပေါင်းစပ်မှုတွင် အားသာချက်တစ်ခုရှိသည်၊ သို့သော် ၎င်းသည် ကြီးမားသောကော်ပိုရေးရှင်းတစ်ခု၏ဘဏ္ဍာရေးဆိုင်ရာပံ့ပိုးမှု ကင်းမဲ့နေသည်။
- စာရွက်စာတမ်းမရှိခြင်းသည် Nest အသုံးပြုသူများအတွက် အကြီးမားဆုံး ခြိမ်းခြောက်မှုတစ်ခုဖြစ်သည်။ မူဘောင်သည် အခြားမူဘောင်များနှင့် ကောင်းမွန်သောအပြန်အလှန်ဆက်သွယ်မှုများရှိသော်လည်း စာရွက်စာတမ်းသည် ကျဲပါးပြီး ဖြစ်ပေါ်လာနိုင်သည့်အခက်အခဲများကို မဖြေရှင်းပေးပေ။
- Nest သည် TypeScript အသုံးပြုမှုနှင့် Angular ၏ အားသာချက်တစ်ခုဖြစ်သည်။
ကောက်ချက်
NestJS သည် developer များအား ကြီးမားသော ခြေတစ်ချောင်းကို ပံ့ပိုးပေးသည်။ ဖွံ့ဖြိုးတိုးတက်မှုစတင်ရန်၊ သင်လုပ်ဆောင်ရန်သာဖြစ်သည်။ အက်ပ်အသစ်တစ်ခု ဖန်တီးပါ။ မင်းသွားလို့ကောင်းတယ်။ ဤမူဘောင်သည် သင့်လျော်သောအက်ပ်ဗိသုကာတစ်ခုတည်ဆောက်ခြင်းဖြင့် ထပ်ဆင့်အဆင့်များတက်လှမ်းရာတွင်လည်း ကူညီပေးနေစဉ်တွင် ဤဘောင်သည် သိသာထင်ရှားသောတိုးတက်မှုကို ချက်ချင်းပေးပါသည်။
၎င်းသည် စီမံခန့်ခွဲနိုင်သော နှင့် ကြာရှည်ခံနိုင်သော အပလီကေးရှင်းများ ထုတ်လုပ်ရန် နောက်ဆုံးပေါ် နည်းလမ်းများနှင့် နည်းပညာများကို အသုံးပြုစေသည်။ GraphQL၊ WebSockets နှင့် microservices များကို တည်ဆောက်ရန် ၎င်းကို အသုံးပြုနိုင်သည်။
တစ်ဦးစာပြန်ရန် Leave