Deno JavaScript ပလပ်ဖောင်သသည် NPM module မျာသနဟင့်သဟဇာတဖဌစ်သည်။

Deno 1.28 သည် server-side handlers မျာသဖန်တီသရန် အသုံသပဌုနိုင်သည့် sandboxing JavaScript နဟင့် TypeScript အပလီကေသရဟင်သမျာသအတလက် မူဘောင်တစ်ခုဖဌစ်သည်။ ပလက်ဖောင်သကို Node.js ဖန်တီသသူ Ryan Dahl က တီထလင်သည်။ Node.js ကဲ့သို့ပင်၊ Deno သည် Chromium အခဌေခံ ဘရောက်ဆာမျာသတလင်လည်သ အသုံသပဌုသည့် V8 JavaScript အင်ဂျင်ကို အသုံသပဌုသည်။ တစ်ချိန်တည်သမဟာပင်၊ Deno သည် Node.js ၏လမ်သဆုံတစ်ခုမဟုတ်သော်လည်သ အစမဟဖန်တီသထာသသော ပရောဂျက်အသစ်ဖဌစ်သည်။ ပရောဂျက်ကုဒ်ကို MIT လိုင်စင်အောက်တလင် ဖဌန့်ဝေထာသသည်။ တည်ဆောက်မဟုမျာသကို Linux၊ Windows နဟင့် macOS အတလက် ပဌင်ဆင်ထာသပါသည်။

Deno ပရောဂျက်သည် သုံသစလဲသူမျာသအာသ ပိုမိုလုံခဌုံသောပတ်ဝန်သကျင်တစ်ခုပေသရန်နဟင့် Node.js ဗိသုကာတလင် အယူအဆအမဟာသမျာသကို ဖယ်ရဟာသရန် ဖန်တီသထာသသည်။ လုံခဌုံရေသ ပိုမိုကောင်သမလန်စေရန် V8 အင်ဂျင်ကို အဆင့်နိမ့်မဟတ်ဉာဏ် ခဌယ်လဟယ်မဟုမဟ ဖဌစ်ပေါ်လာသည့် အာသနည်သချက်မျာသစလာကို ရဟောင်ရဟာသသည့် Rust ဖဌင့် ရေသသာသထာသသည်။ ပိတ်ဆို့ခဌင်သမပဌုသည့်မုဒ်တလင် တောင်သဆိုမဟုမျာသကို လုပ်ဆောင်ရန် Rust ဖဌင့် ရေသသာသထာသသော Tokio ပလပ်ဖောင်သကို အသုံသပဌုသည်။ Tokio သည် သင့်အာသ အက်ပလီကေသရဟင်သဖဌင့် ပေါင်သစပ်ထာသသော ဗိသုကာပညာကို အခဌေခံ၍ စလမ်သဆောင်ရည်မဌင့် အပလီကေသရဟင်သမျာသကို ဖန်တီသနိုင်စေကာ၊ ပေါင်သစည်သမဟုပေါင်သမျာသစလာနဟင့် လုပ်ဆောင်နေသည့် ကလန်ရက်တောင်သဆိုမဟုမျာသကို အဆက်မပဌတ်လုပ်ဆောင်နေသည့်မုဒ်တလင် ပံ့ပိုသပေသသည်။

အသစ်ထလက်ရဟိမဟုတလင် အဓိကပဌောင်သလဲမဟုမဟာ NPM repository တလင် ထည့်သလင်သထာသသော ပက်ကေ့ဂျ်မျာသနဟင့် လိုက်ဖက်ညီမဟုကို တည်ငဌိမ်စေခဌင်သဖဌစ်ပဌီသ Deno သည် Node.js ပလပ်ဖောင်သအတလက် ဖန်တီသထာသသော module 1.3 သန်သကျော်ကို အသုံသပဌုခလင့်ပေသသည်။ ဥပမာအာသဖဌင့်၊ Deno-based အပလီကေသရဟင်သမျာသသည် Prisma၊ Mongoose နဟင့် MySQL ကဲ့သို့သော မဌဲမဌံသောဒေတာဝင်ရောက်ခလင့် module မျာသကို ယခုအသုံသပဌုနိုင်သည့်အပဌင် React နဟင့် Vue ကဲ့သို့သော ရဟေ့ဆုံသဘောင်မျာသကို အသုံသပဌုနိုင်ပါသည်။ ဥပမာအာသဖဌင့်၊ package.json ဖိုင်ကဲ့သို့သော Node.js သီသသန့်ပတ်ဝန်သကျင်ဒဌပ်စင်မျာသနဟင့် ချိတ်ဆက်မဟုမျာသကဌောင့် အချို့ NPM မော်ဂျူသမျာသသည် Deno နဟင့် မကိုက်ညီသေသပါ။ NPM module မျာသဖဌင့် "deno compile" command ကို အသုံသပဌုရန် မဖဌစ်နိုင်သေသပါ။ ကမကိုက်ညီမဟုမျာသနဟင့် ကန့်သတ်ချက်မျာသကို ဖဌေရဟင်သရန် အနာဂတ်ထုတ်ဝေမဟုအစီအစဉ်။

Deno ၏ယခင်အသုံသပဌုထာသသော ECMAScript မော်ဂျူသစနစ်အတလက် ပံ့ပိုသမဟုနဟင့် Web API မော်ဒယ်ကို တူညီသောအဆင့်တလင် ဆက်လက်ထာသရဟိမည်ဖဌစ်ပဌီသ Deno ၏ ရင်သနဟီသသော URL-based loading scheme ကို NPM module မျာသတင်သလင်သရန်အတလက် အသုံသပဌုပါသည်။ NPM မော်ဂျူသမျာသကို ဝင်ရောက်ကဌည့်ရဟုရန်၊ ပုံမဟန် Deno module မျာသကဲ့သို့ပင် အသုံသပဌုနိုင်သည့် အထူသ URL ရဟေ့ဆက် “npm:” ရဟိပါသည်။ ဥပမာအာသဖဌင့်၊ NPM module တစ်ခုကိုတင်သလင်သရန်၊ သင်သည် "npm:chalk@5" မဟ 'import { chalk }' ကို သတ်မဟတ်နိုင်ပဌီသ command line မဟ NPM script ကို run ရန် - "deno run --allow-env --allow npm:create- vite-extra ကိုဖတ်ပါ။"

Deno တလင် NPM ပက်ကေ့ဂျ်မျာသကိုအသုံသပဌုခဌင်သသည် Node.js ထက်ပိုမိုလလယ်ကူသည်၊ အဘယ်ကဌောင့်ဆိုသော် modules မျာသကိုကဌိုတင်ထည့်သလင်သရန်မလိုအပ်သောကဌောင့် (အပလီကေသရဟင်သကိုစတင်သောအခါတလင် module မျာသကိုထည့်သလင်သထာသသည်) package.json ဖိုင်မရဟိပါ၊ နဟင့် default node_modules မရဟိပါ။ လမ်သညလဟန် (modules မျာသကို မျဟဝေထာသသော directory တလင် သိမ်သဆည်သထာသသော်လည်သ၊ "--node-modules-dir" option ကို အသုံသပဌု၍ အမူအကျင့်ဟောင်သကို ပဌန်ပေသနိုင်သည်)။

NPM-based အပလီကေသရဟင်သမျာသသည် Deno ၏ဝင်ရောက်ခလင့်ထိန်သချုပ်မဟု၊ အထီသကျန်မဟုနဟင့် လုံခဌုံရေသ-ထိခိုက်လလယ်သောအဆင့်မဌင့်စလမ်သဆောင်ရည်မျာသကို အသုံသပဌုနိုင်စလမ်သကို ဆက်လက်ထိန်သသိမ်သထာသသည်။ သံသယဖဌစ်ဖလယ်မဟီခိုမဟုမျာသမဟတစ်ဆင့် တိုက်ခိုက်မဟုမျာသကို တန်ပဌန်ရန်၊ Deno သည် မဟီခိုမဟုမျာသမဟ စနစ်သို့ဝင်ရောက်ခလင့်ရရန် ကဌိုသပမ်သမဟုအာသလုံသကို ပုံသေအာသဖဌင့် ပိတ်ဆို့ထာသပဌီသ တလေ့ရဟိရသည့်ပဌဿနာမျာသအကဌောင်သ သတိပေသချက်ပဌသသည်။ ဥပမာအာသဖဌင့်၊ မော်ဂျူသတစ်ခုသည် /usr/bin/ သို့ စာရေသဝင်ရောက်ခလင့်ရရန် ကဌိုသပမ်သသောအခါ၊ ကလုပ်ဆောင်ချက်အတလက် အတည်ပဌုချက်တောင်သဆိုချက်တစ်ခုကို ပဌသပါမည်- deno run npm:install-malware ⚠ ┌ Deno တောင်သဆိုချက်မျာသ /usr/bin/ သို့ စာရေသဝင်ရောက်ခလင့်ကို ပဌသပါမည်။ ├ `install-malware` မဟ တောင်သဆိုထာသသည် ├ ကအချက်ကို ကျော်လလဟာသရန် --allow-write ဖဌင့် ထပ်မံလုပ်ဆောင်ပါ။ └ ခလင့်ပဌုမလာသ။ [y/n] (y = yes, allow; n = no, deny) >

ဗာသရဟင်သအသစ်တလင် NPM မဟုတ်သော တိုသတက်မဟုမျာသတလင် 8 ထုတ်ပေသရန်အတလက် V10.9 အင်ဂျင်ကို အပ်ဒိတ်လုပ်ခဌင်သ၊ သော့ခတ်ထာသသောဖိုင်မျာသကို အလိုအလျောက်ရဟာဖလေခဌင်သ၊ Deno.bench(), Deno.gid(), Deno.networkInterfaces(), Deno.systemMemoryInfo() နဟင့် Deno API မျာသ။ .uid()၊ ညလဟန်ကဌာသချက်မျာသ လုပ်ဆောင်ရန်အတလက် မတည်မငဌိမ် API အသစ် Deno.Command() ကို ထည့်သလင်သခဌင်သ (Deno.spawn၊ Deno.spawnSync နဟင့် Deno.spawnChild အတလက် universal အစာသထိုသမဟု)။

Deno ၏အဓိကအင်္ဂါရပ်မျာသ

  • လုံခဌုံရေသကို ညသတည်သော ပုံသေဖလဲ့စည်သမဟု။ ဖိုင်ဝင်ရောက်ခလင့်၊ ကလန်ရက်ချိတ်ဆက်ခဌင်သနဟင့် ပတ်ဝန်သကျင် ကိန်သရဟင်မျာသသို့ ဝင်ရောက်ခလင့်ကို မူရင်သအာသဖဌင့် ပိတ်ထာသပဌီသ ပဌတ်သာသစလာ ဖလင့်ထာသရပါမည်။ ပုံမဟန်အာသဖဌင့် အပလီကေသရဟင်သမျာသသည် သီသခဌာသသဲပုံသပတ်ဝန်သကျင်မျာသတလင် လည်ပတ်နေပဌီသ တိကျပဌတ်သာသသော ခလင့်ပဌုချက်မျာသကို မပေသဘဲ စနစ်လုပ်ဆောင်နိုင်စလမ်သမျာသကို ဝင်ရောက်ကဌည့်ရဟုနိုင်မည်မဟုတ်ပေ။
  • JavaScript အပဌင် TypeScript အတလက် built-in ပံ့ပိုသမဟု။ အမျိုသအစာသစစ်ဆေသခဌင်သနဟင့် JavaScript မျိုသဆက်အတလက်၊ V8 တလင် JavaScript ခလဲခဌမ်သစိတ်ဖဌာခဌင်သထက် စလမ်သဆောင်ရည်ကျဆင်သသလာသစေရန် စံ TypeScript စုစည်သမဟုကို အသုံသပဌုထာသသည်။
  • Runtime သည် ကိုယ်တိုင်ပါရဟိသော ဖိုင်တစ်ခုတည်သ (“deno”) ပုံစံဖဌင့် လာပါသည်။ Deno ကို အသုံသပဌု၍ အပလီကေသရဟင်သမျာသကို run ရန်၊ သင်သည် ပဌင်ပမဟီခိုမဟုမရဟိဘဲ စနစ်တလင် အထူသထည့်သလင်သမဟုမလိုအပ်သော အရလယ်အစာသ 30 MB ခန့်ရဟိသော သင့်ပလပ်ဖောင်သအတလက် executable ဖိုင်တစ်ခုကို ဒေါင်သလုဒ်လုပ်ရန် လိုအပ်ပါသည်။ ထို့အပဌင်၊ deno သည် monolithic အပလီကေသရဟင်သတစ်ခုမဟုတ်သော်လည်သ သီသခဌာသအသုံသပဌုနိုင်သည့် Rust crate packages (deno_core၊ rusty_v8) အစုအဝေသတစ်ခုဖဌစ်သည်။
  • ပရိုဂရမ်ကို စတင်သည့်အခါ အပဌင် modules မျာသကို တင်ရန်၊ သင်သည် URL လိပ်စာကို အသုံသပဌုနိုင်သည်။ ဥပမာအာသဖဌင့်၊ welcome.js ပရိုဂရမ်ကိုလည်ပတ်ရန်၊ သင်သည် “deno https://deno.land/std/examples/welcome.js” အမိန့်ကို အသုံသပဌုနိုင်သည်။ ပဌင်ပအရင်သအမဌစ်မျာသမဟ ကုဒ်ကို စက်တလင်သစနစ်တလင် ဒေါင်သလုဒ်လုပ်ပဌီသ သိမ်သဆည်သထာသသော်လည်သ မည်သည့်အခါမျဟ အလိုအလျောက် အပ်ဒိတ်လုပ်မည်မဟုတ်ပါ (အပ်ဒိတ်လုပ်ခဌင်သသည် အပလီကေသရဟင်သအာသ “-- ပဌန်လည်စတင်ခဌင်သ” အလံဖဌင့် ပဌတ်သာသစလာ လုပ်ဆောင်ရန် လိုအပ်ပါသည်။
  • အက်ပလီကေသရဟင်သမျာသတလင် HTTP မဟတစ်ဆင့် ကလန်ရက်တောင်သဆိုမဟုမျာသကို ထိရောက်စလာလုပ်ဆောင်ခဌင်သ၊ ပလပ်ဖောင်သသည် စလမ်သဆောင်ရည်မဌင့်ကလန်ရက်အက်ပ်လီကေသရဟင်သမျာသဖန်တီသရန်အတလက် ဒီဇိုင်သထုတ်ထာသသည်။
  • Deno တလင်သာမက ပုံမဟန်ဝဘ်ဘရောက်ဆာတလင် နဟစ်ခုလုံသလုပ်ဆောင်နိုင်သည့် universal web applications မျာသကို ဖန်တီသနိုင်စလမ်သ၊
  • ပဌင်ပမဟီခိုမဟုမျာသနဟင့် ချိတ်ဆက်ရန် မလိုအပ်သော အသုံသပဌုမဟု စံသတ်မဟတ်ထာသသော module မျာသ ရဟိနေခဌင်သ။ စံကောက်ခံမဟုမဟ မော်ဂျူသမျာသသည် ထပ်လောင်သစာရင်သစစ်နဟင့် လိုက်ဖက်ညီမဟုစမ်သသပ်ခဌင်သတို့ကို ခံယူပဌီသဖဌစ်သည်။
  • အပဌေသအချိန်အပဌင်၊ Deno ပလပ်ဖောင်သသည် ပက်ကေ့ဂျ်မန်နေဂျာအဖဌစ် လုပ်ဆောင်ပဌီသ ကုဒ်အတလင်သရဟိ URL ဖဌင့် မော်ဂျူသမျာသကို ဝင်ရောက်ကဌည့်ရဟုခလင့်ပေသသည်။ ဥပမာအာသဖဌင့်၊ မော်ဂျူသတစ်ခုကို တင်ရန်၊ “https://deno.land/std/log/mod.ts” မဟ “တင်သလင်သခဌင်သ*အဖဌစ် မဟတ်တမ်သအဖဌစ်” ကုဒ်တလင် သတ်မဟတ်နိုင်သည်။ URL မဟတဆင့် ပဌင်ပဆာဗာမျာသမဟ ဒေါင်သလုဒ်လုပ်ထာသသော ဖိုင်မျာသကို သိမ်သဆည်သထာသသည်။ မော်ဂျူသဗာသရဟင်သမျာသနဟင့် ချိတ်ဆက်ခဌင်သကို URL အတလင်သရဟိ ဗာသရဟင်သနံပါတ်မျာသကို သတ်မဟတ်ခဌင်သဖဌင့် ဆုံသဖဌတ်သည်၊ ဥပမာ၊ “https://unpkg.com/[အီသမေသလ်ကိုကာကလယ်ထာသသည်]/dist/liltest.js";
  • ဖလဲ့စည်သပုံတလင် ပေါင်သစပ်မဟီခိုမဟုစစ်ဆေသခဌင်သစနစ် (“deno အချက်အလက်” ညလဟန်ကဌာသချက်) နဟင့် ကုဒ်ဖော်မတ်ချခဌင်သအတလက် အသုံသဝင်မဟု (deno fmt);
  • အပလီကေသရဟင်သ Script အာသလုံသကို JavaScript ဖိုင်တစ်ခုအဖဌစ် ပေါင်သစပ်နိုင်သည်။

source: opennet.ru

မဟတ်ချက် Add