Node.js 23.0 መድረክ ለታይፕ ስክሪፕት ቋንቋ የመጀመሪያ ድጋፍ ታትሟል

Node.js 23.0.0 በጃቫስክሪፕት የኔትወርክ አፕሊኬሽኖችን ለማሄድ የሚያስችል መድረክ ተለቋል። Node.js 23.0 እንደ መካከለኛ ቅርንጫፍ ተመድቧል፣ እሱም ለ7 ወራት የሚደገፍ (እስከ ሰኔ 2025)። በሚቀጥሉት ቀናት የ Node.js 22 ቅርንጫፍ ማረጋጋት ይጠናቀቃል፣ እሱም በጥቅምት 29 የLTS ሁኔታን የሚቀበል እና እስከ ኤፕሪል 2027 ድረስ የሚደገፍ ይሆናል። ያለፉት የ LTS የ Node.js 20.x እና 18.x ቅርንጫፎች ድጋፍ እስከ ኤፕሪል 2026 እና 2025 ድረስ ይቀጥላል።

ዋና ማሻሻያዎች፡-

  • ለታይፕስክሪፕት የሙከራ ድጋፍ ታክሏል፣ ይህም ግልጽ ዓይነት ፍቺዎችን ይፈቅዳል። የ"--የሙከራ-ስትሪፕ-ዓይነት" እና "--የሙከራ-ትራንስፎርም-ዓይነት" አማራጮችን በመጠቀም ድጋፍ ነቅቷል። የመጀመሪያው አማራጭ ከሆነ፣ ከTyScript ጋር አብሮ መስራት ቋንቋ-ተኮር ዓይነት ፍቺዎችን ወደ ማጽዳት ይቀንሳል (አይነት ማጣራት አልተሰራም፣ ኮዱ በቀላሉ ወደ ታይፕ አልባ ጃቫስክሪፕት ይቀየራል)። ሁለተኛው አማራጭ አንዳንድ የTyScript አገባብ ክፍሎችን እንደ ዝርዝር እና የስም ቦታ ወደ ጃቫስክሪፕት ኮድ ይቀይራል።
  • በነባሪነት የነቃው ጃቫ ስክሪፕት ኢኤስኤም ሞጁሎችን (ECMAScript ሞጁሎችን) በተመሳሰለ ሁነታ ለመጫን የ"require()" ጥሪን መጠቀም መቻል ነው። የESM ሞጁሎች በአሳሾች ውስጥ ጥቅም ላይ ይውላሉ እና ለ Node.js የተለዩ CommonJS ሞጁሎችን ይተካሉ። በ Node.js ውስጥ በ"require()" በኩል ለመጫን የESM ሞጁሉ በተመሳሰለ (ከፍተኛ ደረጃ ላይ ሳይጠበቅ) መተግበር አለበት።
  • የESM ሞጁሎችን ያለ ".js" ቅጥያ በፋይሎች ውስጥ በራስ ሰር ማግኘት ቀርቧል። ከዚህ ቀደም እንደዚህ ያሉ ፋይሎች እንደ CommonJS ሞጁሎች ተደርገው ይወሰዱ ነበር አይነታቸው በጥቅል.json ፋይል ውስጥ በተመሳሳይ ማውጫ ("አይነት": "ሞዱል") ውስጥ በግልጽ ካልተገለፀ በስተቀር. በአዲሱ እትም በ package.json ውስጥ አይነታቸው ላልተገለጹ ፋይሎች መጀመሪያ እንደ CommonJS ሞጁል ለመጫን ይሞክራል እና ይህ ካልተሳካ እንደ ESM ሞጁል ነው።
  • የሙከራ ትግበራ ታክሏል ከአሳሾች ጋር ተኳሃኝ የድር ማከማቻ ኤፒአይ የተነደፈው ለቋሚ (localStorage class) ወይም ለጊዜያዊ (sessionStorage class) የቁልፍ/እሴት ውሂብ ማከማቻ ነው። የድር ማከማቻ ድጋፍን ማንቃት ኤፒአይን በ"--ሙከራ-ዌብስቶርጅ" ባንዲራ ማስኬድ እና ወደ ማከማቻ ፋይሉ የሚወስደውን መንገድ በ"--localstorage-file" ባንዲራ መግለጽን ይጠይቃል።
  • በSQLite ቤተ-መጽሐፍት ላይ የተመሠረተ የSQL መጠይቅ ቋንቋ እና ማከማቻ በመጠቀም ከመረጃ ቋቶች ጋር ለመስራት የታከለ የሙከራ SQLite API። የውሂብ ጎታውን በዲስክ ላይ ባለው ፋይል ውስጥ ከማጠራቀም በተጨማሪ ከፋይል ስም ይልቅ ": ትውስታ:" በመጥቀስ በማህደረ ትውስታ ውስጥ ማስቀመጥ ይቻላል. ከላይ የተጠቀሰው የድር ማከማቻ ኤፒአይ እንዲሁ በSQLite ላይ ይተገበራል፣ በዚህም ምክንያት SQLite እንደ Node.js ጥገኝነት ይጨምራል።
  • በPack.json ፋይል ውስጥ የተገለጹ ስክሪፕቶችን ለማስኬድ የተነደፈው “node —run” የሚለው ትዕዛዝ የተረጋጋ እንደሆነ ታውጇል።
  • የሞጁሎችን ጅምር በከፍተኛ ሁኔታ ለማፋጠን የተጠናቀረ ኮድ በዲስክ ላይ ለመሸጎጥ የተተገበረ አማራጭ ድጋፍ። መሸጎጥ የነቃው በNODE_COMPILE_CACHE አካባቢ ተለዋዋጭ በኩል ነው። ከዓላማው አንጻር, ባህሪው ከ v8-compile-cache ጥቅል ጋር ይመሳሰላል, ነገር ግን በከፍተኛ አፈፃፀም እና ለ ESM ሞጁሎች ድጋፍ ይለያል.
  • የ Buffer ነገሩ የBuffer.copy() እና Buffer.write() ዘዴዎችን አፈጻጸም በከፍተኛ ደረጃ ለማሳደግ ተመቻችቷል።
  • የ node:fs ሞጁል አፈጻጸም ተሻሽሏል፣ ይህ ደግሞ በሚሠራበት ጊዜ ወደ C++ ኮድ የሚደረጉ ጥሪዎችን ቁጥር ይቀንሳል።
  • የV8 ሞተር በChromium 12.9 ጥቅም ላይ ወደ ሚገኘው ስሪት 129 ተዘምኗል።
  • ለ 32 ቢት የዊንዶውስ ስርዓቶች ድጋፍ ተወግዷል.
  • በ Node.js እና V8 ሞተር ውስጥ በC ++20 ደረጃ የተገለጹ ባህሪያትን በማስተዋወቅ ምክንያት ለጂሲሲ ኮምፕሌር ስሪት የሚያስፈልጉ መስፈርቶች ጨምረዋል። Node.jsን መገንባት አሁን ቢያንስ GCC 12 ያስፈልገዋል።

የNode.js መድረክ ለድር አፕሊኬሽኖች በአገልጋይ-ጎን ድጋፍ እና መደበኛ የደንበኛ እና የአገልጋይ-ጎን የኔትወርክ ፕሮግራሞችን ለመፍጠር ጥቅም ላይ ሊውል ይችላል። የNode.js አፕሊኬሽኖችን ተግባር ለማስፋት፣ ትግበራዎችን ጨምሮ በርካታ የሞጁሎች ስብስብ ተዘጋጅቷል። አገልጋዮች እና የኤችቲቲፒ፣ SMTP፣ XMPP፣ DNS፣ FTP፣ IMAP፣ POP3፣ ከተለያዩ የድር ማዕቀፎች፣ WebSocket እና Ajax ተቆጣጣሪዎች፣ ከ DBMS (MySQL፣ PostgreSQL፣ SQLite፣ MongoDB) ጋር ለማዋሃድ ሞጁሎች ደንበኞች፣ የአብነት ሞተሮች፣ የሲኤስኤስ ሞተሮች፣ የክሪፕቶግራፊክ ስልተ ቀመሮች እና የፈቃድ ስርዓቶች (OAuth) አተገባበር፣ የኤክስኤምኤል ተንታኞች።

ብዙ ቁጥር ያላቸው ትይዩ ጥያቄዎችን ለማስተናገድ Node.js በማይከለክለው የክስተት ሂደት እና የመልሶ ጥሪ ተቆጣጣሪዎችን በመግለጽ ላይ የተመሰረተ ያልተመሳሰል ኮድ ማስፈጸሚያ ሞዴል ይጠቀማል። የሚደገፉ ግንኙነቶችን ለማባዛት የሚረዱ ዘዴዎች epoll, kqueue, /dev/poll እና ይምረጡ. ለግንኙነት ማባዛት፣ ሊቡቭ ቤተ-መጽሐፍት ጥቅም ላይ ይውላል፣ ይህም በዩኒክስ ሲስተምስ ላይ ለሊቭቭ እና በዊንዶውስ ላይ IOCP ላይ ተጨማሪ ነው። የሊቤዮ ቤተ-መጽሐፍት የክር ገንዳ ለመፍጠር ይጠቅማል፣ እና c-ares የተዋሃደው የዲ ኤን ኤስ መጠይቆችን በማይታገድ ሁነታ ነው። እገዳን የሚያስከትሉ ሁሉም የስርዓት ጥሪዎች በክር ገንዳ ውስጥ ይከናወናሉ እና ከዚያ ልክ እንደ ሲግናል ተቆጣጣሪዎች የሥራቸውን ውጤት ባልታወቀ ቧንቧ ይመለሳሉ።

የጃቫ ስክሪፕት ኮድ አፈፃፀም የሚረጋገጠው በጎግል በተሰራው የቪ8 ኢንጂን በመጠቀም ነው (በተጨማሪም ማይክሮሶፍት የ Node.js ሥሪት ከቻክራ-ኮር ሞተር ጋር እያዘጋጀ ነው።) በዋናው ላይ፣ Node.js ከ Perl AnyEvent፣ Ruby Event Machine፣ Python Twisted frameworks እና በTcl ውስጥ ያሉ የክስተቶች አተገባበር ጋር ተመሳሳይ ነው፣ ነገር ግን በ Node.js ውስጥ ያለው የክስተት ዑደት ከገንቢው የተደበቀ እና በድር መተግበሪያ ውስጥ የክስተት ሂደትን ይመስላል። በአሳሽ ውስጥ እየሄደ ነው።

ምንጭ: opennet.ru

አስተያየት ያክሉ