Node.js ၏ရေသသာသသူသည် လုံခဌုံသော JavaScript ပလပ်ဖောင်သ Deno 1.0 ကိုတင်ပဌခဲ့သည်။

နဟစ်နဟစ်ကဌာမဟ ဖလံ့ဖဌိုသတိုသတက်လာတယ်။ တင်ဆက် ပထမဆုံသ အကဌီသစာသ ထုတ်ဝေမဟု Deno ၁.၀Javascript နဟင့် TypeScript တလင် အပလီကေသရဟင်သမျာသ သီသသန့်လုပ်ဆောင်ခဌင်သအတလက် ပလပ်ဖောင်သတစ်ခုဖဌစ်ပဌီသ၊ ဆာဗာပေါ်တလင် လုပ်ဆောင်သည့် ကိုင်တလယ်သူမျာသကို ဖန်တီသရန်အတလက် အသုံသပဌုနိုင်သည်။ အဆိုပါပလပ်ဖောင်သကို Ryan Dahl ကတီထလင်ခဲ့သည် (Ryan DahlNode.js ကို ဖန်တီသသူ။ Node.js ကဲ့သို့ပင်၊ Deno သည် JavaScript အင်ဂျင်ကို အသုံသပဌုသည်။ V8Chromium အခဌေခံ ဘရောက်ဆာမျာသတလင်လည်သ အသုံသပဌုပါသည်။ တစ်ချိန်တည်သမဟာပင်၊ Deno သည် Node.js ၏လမ်သဆုံတစ်ခုမဟုတ်သော်လည်သ အစမဟဖန်တီသထာသသော ပရောဂျက်အသစ်ဖဌစ်သည်။ ပရောဂျက်ကုဒ် ဖဌန့်ဝေသည် MIT လိုင်စင်အောက်တလင်။ စည်သဝေသပလဲမျာသ ပဌင်ဆင် Linux၊ Windows နဟင့် macOS အတလက်။

သိသာထင်ရဟာသသော ဗာသရဟင်သနံပါတ်သည် OS နဟင့် အပလီကေသရဟင်သမျာသ၏ အပဌန်အလဟန်အကျိုသသက်ရောက်မဟုအတလက် တာဝန်ရဟိသော Deno namespace ရဟိ APIs မျာသ၏ တည်ငဌိမ်မဟုနဟင့် ဆက်စပ်နေသည်။ ဆော့ဖ်ဝဲလ် အင်တာဖေ့စ်မျာသသည် ယခုအချိန်အထိ ရဟိနေသည်။ မတည်ငဌိမ်ပါ။ပုံသေအာသဖဌင့် ဝဟက်ထာသပဌီသ “--မတည်ငဌိမ်သော” မုဒ်တလင်သာ လုပ်ဆောင်နေချိန်တလင်သာ ရရဟိနိုင်သည်။ ဗာသရဟင်သအသစ်မျာသဖလဲ့စည်သလာသည်နဟင့်အမျဟ၊ ထိုသို့သော API မျာသသည် တဖဌည်သဖဌည်သတည်ငဌိမ်လာမည်ဖဌစ်သည်။ setTimeout() နဟင့် fetch() ကဲ့သို့သော ဘုံလုပ်ဆောင်ချက်မျာသပါဝင်သည့် ကမ္ဘာလုံသဆိုင်ရာ namespace ရဟိ API သည် သမာသရိုသကျဝဘ်ဘရောက်ဆာမျာသ၏ API နဟင့် အနီသစပ်ဆုံသဖဌစ်ပဌီသ ဘရောက်ဆာမျာသအတလက် ဝဘ်စံနဟုန်သမျာသနဟင့်အညီ တီထလင်ထာသသည်။ ပလက်ဖောင်သကုဒ်တလင် တိုက်ရိုက်အသုံသပဌုသည့် Rust မဟ ပံ့ပိုသပေသသည့် API မျာသအပဌင် Deno runtime အတလက် plugins မျာသကို တီထလင်ရန်အတလက် အင်တာဖေ့စ်မျာသသည် မတည်ငဌိမ်သေသဘဲ ဆက်လက်ဖလံ့ဖဌိုသဆဲဖဌစ်သည်။

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

အဓိက အင်္ဂါရပ်မျာသ ဒဲနို-

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

Node.js နဟင့် ကလာခဌာသချက်မျာသ-

  • Deno သည် npm ပက်ကေ့ဂျ်မန်နေဂျာကို အသုံသမပဌုပါ။
    repositories နဟင့် ချိတ်ဆက်ထာသခဌင်သ မဟုတ်ဘဲ၊ module မျာသကို URL တစ်ခု သို့မဟုတ် ဖိုင်လမ်သကဌောင်သဖဌင့် ကိုင်တလယ်ဖဌေရဟင်သပဌီသ modules မျာသကို ၎င်သတို့ကိုယ်တိုင် မည်သည့် website တလင်မဆို ထာသရဟိနိုင်ပါသည်။
  • မော်ဂျူသမျာသကို သတ်မဟတ်ရန် Deno သည် "package.json" ကို အသုံသမပဌုပါ။
  • API ခဌာသနာသချက်၊ Deno တလင် အပျက်သဘောဆောင်သည့် လုပ်ဆောင်ချက်မျာသအာသလုံသကို ကတိတစ်ခု ပဌန်ပေသသည်။
  • Deno သည် ဖိုင်မျာသ၊ ကလန်ရက်နဟင့် ပတ်ဝန်သကျင် ကိန်သရဟင်မျာသအတလက် လိုအပ်သော ခလင့်ပဌုချက်မျာသအာသလုံသကို ရဟင်သလင်သပဌတ်သာသစလာ အဓိပ္ပါယ်ဖလင့်ဆိုရန် လိုအပ်ပါသည်။
  • ကိုင်တလယ်သူနဟင့် ပံ့ပိုသမထာသသော အမဟာသမျာသအာသလုံသသည် လျဟောက်လလဟာကို ရပ်စဲသလာသစေသည်။
  • Deno သည် ECMAScript module system ကိုအသုံသပဌုပဌီသ လိုအပ်သည်();
  • Deno ၏ built-in HTTP ဆာဗာကို TypeScript ဖဌင့်ရေသသာသထာသပဌီသ Node.js HTTP ဆာဗာသည် C ဖဌင့်ရေသသာသထာသပဌီသ JavaScript အတလက် binding မျာသပေသဆောင်နေချိန်တလင် မူရင်သ TCP socket မျာသပေါ်တလင် အလုပ်လုပ်ပါသည်။ Deno ၏ developer မျာသသည် TCP socket အလလဟာတစ်ခုလုံသကို ကောင်သမလန်အောင်ပဌုလုပ်ရန်နဟင့် ပိုမိုယေဘုယျ interface ကိုပေသဆောင်ရန် အာရုံစိုက်ထာသသည်။ Deno HTTP ဆာဗာသည် ထုတ်လလဟင့်မဟု နည်သပါသသော်လည်သ ကဌိုတင်မဟန်သဆနိုင်သော latency နည်သပါသကဌောင်သ အာမခံပါသည်။ ဥပမာအာသဖဌင့်၊ စမ်သသပ်မဟုတလင်၊ Deno HTTP ဆာဗာကို အခဌေခံထာသသော ရိုသရဟင်သသော အပလီကေသရဟင်သသည် တစ်စက္ကန့်လျဟင် တောင်သဆိုချက်ပေါင်သ 25 ကို အမျာသဆုံသ latency 1.3 မီလီစက္ကန့်ဖဌင့် လုပ်ဆောင်နိုင်ခဲ့သည်။ Node.js တလင် အလာသတူအပလီကေသရဟင်သတစ်ခုသည် တစ်စက္ကန့်လျဟင် တောင်သဆိုချက်ပေါင်သ ၃၄ဝဝဝ ကိုလုပ်ဆောင်ခဲ့သော်လည်သ latencies သည် 34 နဟင့် 2 မီလီစက္ကန့်အထိရဟိသည်။
  • Deno သည် Node.js (NPM) အတလက် ပက်ကေ့ဂျ်မျာသနဟင့် သဟဇာတမဖဌစ်ဘဲ သီသခဌာသတီထလင်နေပါသည်။ interlayer ပုံမဟန် Node.js စာကဌည့်တိုက်နဟင့် လိုက်ဖက်ညီမဟုအတလက်၊ ၎င်သသည် ဖလံ့ဖဌိုသတိုသတက်လာသည်နဟင့်အမျဟ Node.js အတလက် ရေသသာသထာသသော အပလီကေသရဟင်သမျာသ ပိုမျာသလာကာ Deno တလင် လည်ပတ်နိုင်မည်ဖဌစ်သည်။
  • source: opennet.ru

မဟတ်ချက် Add