Server-side JavaScript Node.js 17.0 ထုတ်ဝေမှု

JavaScript တွင် ကွန်ရက်အက်ပလီကေးရှင်းများကို လုပ်ဆောင်ရန်အတွက် ပလပ်ဖောင်းတစ်ခုဖြစ်သည့် Node.js 17.0 ကို ထုတ်ဝေလိုက်ပါသည်။ Node.js 17.0 သည် 2022 ဇွန်လအထိ အပ်ဒိတ်များပါရှိသော ပုံမှန်ပံ့ပိုးကူညီမှုဌာနခွဲတစ်ခုဖြစ်သည်။ လာမည့်ရက်များတွင်၊ Node.js 16 ဌာနခွဲ၏ တည်ငြိမ်မှုကို ပြီးမြောက်စေမည်ဖြစ်ပြီး၊ ၎င်းသည် LTS အခြေအနေကို ရရှိမည်ဖြစ်ပြီး ဧပြီလ 2024 အထိ ပံ့ပိုးပေးမည်ဖြစ်သည်။ ယခင် Node.js 14.0 LTS ဌာနခွဲကို ပြုပြင်ထိန်းသိမ်းမှုသည် ဧပြီလ 2023 အထိဖြစ်ပြီး ယခင် 12.0 LTS ဌာနခွဲသည် ဧပြီလ 2022 အထိ ကြာမြင့်မည်ဖြစ်သည်။

အဓိက တိုးတက်မှုများ-

  • V8 အင်ဂျင်ကို ဗားရှင်း 9.5 သို့ အဆင့်မြှင့်တင်ထားသည်။
  • Promise asynchronous computing interface ကို အသုံးပြုမှုအပေါ် အခြေခံ၍ base API ၏ မူကွဲများကို အကောင်အထည်ဖော်မှုသည် ဆက်လက်ရှိနေပါသည်။ ယခင်က အဆိုပြုထားသည့် Timers Promises နှင့် Stream Promises APIs များအပြင် Node.js 17.0 သည် readline module ကို အသုံးပြု၍ ဒေတာလိုင်းကို ဖတ်ရှုရန်အတွက် Readline Promise API ကို မိတ်ဆက်ပေးပါသည်။ 'node:readline/promises' မှ readline * အဖြစ် တင်သွင်းပါ။ 'လုပ်ငန်းစဉ်' မှ { stdin ကို ထည့်သွင်းခြင်း၊ stdout as output }၊ const rl = readline.createInterface({ input၊ output }); const အဖြေ = စောင့်မျှော်နေပါတယ် rl.question('Node.js ကို သင် ဘယ်လိုထင်လဲ'); console.log('မင်းရဲ့ အဖိုးတန် တုံ့ပြန်ချက်အတွက် ကျေးဇူးတင်ပါသည်- ${answer}'); rl.close();
  • ပံ့ပိုးပေးထားသော OpenSSL စာကြည့်တိုက်ကို ဗားရှင်း 3.0 သို့ အပ်ဒိတ်လုပ်ပြီးပါပြီ (QUIC ပရိုတိုကောပံ့ပိုးမှုဖွင့်ထားသည့် quictls/openssl လမ်းဆုံလမ်းခွကို အသုံးပြု၍)။
  • Node.js ဗားရှင်းကို အပလီကေးရှင်းကို ရပ်စဲသွားစေသည့် ဆိုးရွားသော အမှားအယွင်းများအတွက် အစုလိုက်ခြေရာခံများတွင် ပြသထားကြောင်း သေချာပါစေ။

ထို့အပြင်၊ လက်ရှိ Node.js (CVE-2021-22959၊ CVE-2021-22960) တွင် HTTP Request Smuggling (HRS) အတန်းကို တိုက်ခိုက်မှုများကို လုပ်ဆောင်နိုင်စေသည့် အားနည်းချက်နှစ်ခုကို ဖယ်ရှားရှင်းလင်းခြင်းကိုလည်း ဖော်ပြနိုင်သည်။ Frontend နှင့် backend အကြား တူညီသော thread တွင် လုပ်ဆောင်ခဲ့သော အခြားအသုံးပြုသူများထံမှ တောင်းဆိုချက်များ၏ အကြောင်းအရာကို အထူးဒီဇိုင်းထုတ်ထားသော client တောင်းဆိုချက်များကို ပေးပို့ခြင်းအား ခွင့်ပြုပါ (ဥပမာ၊ အခြားအသုံးပြုသူ၏ session တွင် အန္တရာယ်ရှိသော JavaScript ကုဒ်ကို သင် အစားထိုးနိုင်သည်)။ အသေးစိတ်အချက်အလက်များကို နောက်ပိုင်းတွင်ဖော်ပြသွားမည်ဖြစ်ပြီး၊ သို့သော် HTTP ခေါင်းစီးအမည်နှင့် ကော်လံကြားရှိ နေရာလွတ်များကို မှားယွင်းစွာကိုင်တွယ်ဖြေရှင်းမှုအပြင် ဖြတ်သန်းသွားသည့်အခါအသုံးပြုသည့် ကန့်သတ်ဘောင်အတွင်းအသုံးပြုသည့် ကန့်သတ်ဘောင်အတွင်းမှ စာသားများကို ကိုင်တွယ်ဖြေရှင်းပုံနှင့် လိုင်းအစာအက္ခရာများကို ကွဲပြားစွာသိရှိနိုင်သည် တောင်းဆိုချက်ကိုယ်ထည်ကို "အတုံးလိုက်" မုဒ်တွင် အတုံးလိုက်အတုံးလိုက်။ "။

Node.js ပလပ်ဖောင်းကို ဝဘ်အက်ပလီကေးရှင်းများ၏ ဆာဗာပြုပြင်ထိန်းသိမ်းမှုအတွက်နှင့် သာမန်အသုံးပြုသူနှင့် ဆာဗာကွန်ရက်ပရိုဂရမ်များဖန်တီးရန်အတွက် နှစ်မျိုးလုံးအသုံးပြုနိုင်ကြောင်း သတိရပါ။ Node.js အတွက် အပလီကေးရှင်းများ၏ လုပ်ဆောင်နိုင်စွမ်းကို ချဲ့ထွင်ရန်အတွက် HTTP၊ SMTP၊ XMPP၊ DNS၊ FTP၊ IMAP၊ POP3 ဆာဗာများနှင့် ကလိုင်းယင့်များ၊ ပေါင်းစပ်မှုများအတွက် မော်ဂျူးများကို သင်ရှာဖွေနိုင်သည့် မော်ဂျူးအများအပြားကို ပြင်ဆင်ထားပါသည်။ အမျိုးမျိုးသော ဝဘ်ဘောင်များ၊ WebSocket နှင့် Ajax ကိုင်တွယ်သူများ၊ DBMS ချိတ်ဆက်မှုများ (MySQL၊ PostgreSQL၊ SQLite၊ MongoDB)၊ နမူနာပုံစံအင်ဂျင်များ၊ CSS အင်ဂျင်များ၊ crypto အယ်လဂိုရီသမ်များနှင့် ခွင့်ပြုချက်စနစ်များ (OAuth)၊ XML ခွဲခြမ်းစိတ်ဖြာမှုများ။

အပြိုင်တောင်းဆိုမှုများ အများအပြားကို လုပ်ဆောင်ခြင်းအား သေချာစေရန်၊ Node.js သည် ပိတ်ဆို့ခြင်းမဟုတ်သော ဖြစ်ရပ်ကိုင်တွယ်ခြင်းနှင့် ပြန်ခေါ်ခြင်းဆိုင်ရာ အဓိပ္ပါယ်ဖွင့်ဆိုချက်များကို အခြေခံ၍ Node.js ကို အသုံးပြုပါသည်။ multiplexing ချိတ်ဆက်မှုများအတွက် ပံ့ပိုးပေးထားသော နည်းလမ်းများမှာ epoll၊ kqueue၊ /dev/poll နှင့် ရွေးချယ်ပါ။ ချိတ်ဆက်မှု multiplexing အတွက်၊ Windows ရှိ Unix စနစ်များနှင့် IOCP အတွက် libev အတွက် add-on တစ်ခုဖြစ်သည့် libuv စာကြည့်တိုက်ကို အသုံးပြုပါသည်။ libeio စာကြည့်တိုက်ကို thread pool တစ်ခုဖန်တီးရန်အသုံးပြုထားပြီး၊ ပိတ်ဆို့ခြင်းမဟုတ်သောမုဒ်တွင် DNS မေးမြန်းမှုများကို လုပ်ဆောင်ရန်အတွက် c-ares ကို ပေါင်းစပ်ထားသည်။ ပိတ်ဆို့ခြင်းကို ဖြစ်စေသော စနစ်ခေါ်ဆိုမှုအားလုံးကို thread pool အတွင်းတွင် လုပ်ဆောင်ပြီး၊ ထို့နောက် signal handlers များကဲ့သို့ ၎င်းတို့၏ အလုပ်ရလဒ်ကို အမည်မဖော်လိုသော ပိုက် (pipe) မှတဆင့် ပြန်လည်လွှဲပြောင်းပေးပါသည်။ JavaScript ကုဒ်ကို အကောင်အထည်ဖော်ခြင်းအား Google မှ ဖန်တီးထားသော V8 အင်ဂျင်ကို အသုံးပြုခြင်းဖြင့် ပံ့ပိုးပေးသည် (ထို့ပြင် Microsoft သည် Chakra-Core အင်ဂျင်ဖြင့် Node.js ဗားရှင်းကို ဖန်တီးနေသည်)။

၎င်း၏အဓိကအချက်မှာ Node.js သည် Perl AnyEvent၊ Ruby Event Machine၊ Python Twisted frameworks နှင့် Tcl event implementation တို့နှင့် ဆင်တူသော်လည်း Node.js ရှိ event loop ကို developer မှ ဝှက်ထားပြီး လည်ပတ်နေသည့် ဝဘ်အက်ပလီကေးရှင်းတွင် ဖြစ်ရပ်ကိုင်တွယ်ပုံနှင့် ဆင်တူသည်။ browser တွင်။ node.js အတွက် အပလီကေးရှင်းများ ရေးသားသည့်အခါ၊ သင်သည် "var result = db.query("select..");" အစား event-driven programming ၏ တိကျသောအချက်များကို ထည့်သွင်းစဉ်းစားရန် လိုအပ်ပါသည်။ အလုပ်ပြီးစီးမှုနှင့် ရလဒ်များ၏ နောက်ဆက်တွဲလုပ်ဆောင်မှုများကို စောင့်ဆိုင်းခြင်းဖြင့် Node.js သည် ချိန်ညှိလုပ်ဆောင်ခြင်း၏နိယာမကို အသုံးပြုသည်။ ကုဒ်ကို "db.query("select.."၊ function (result) {result processing});" သို့ ပြောင်းလဲသွားသည်၊ ၎င်းတွင် ထိန်းချုပ်မှုသည် နောက်ထပ်ကုဒ်သို့ ချက်ချင်းရောက်သွားမည်ဖြစ်ပြီး၊ ဒေတာရောက်ရှိသည်နှင့် မေးမြန်းချက်ရလဒ်ကို စီမံဆောင်ရွက်မည်ဖြစ်သည်။

source: opennet.ru

မှတ်ချက် Add