Iqonga leseva yeJavaScript yeNode.js 21.0 ekhoyo

I-Node.js 21.0 yakhululwa, iqonga lokuqhuba usetyenziso lwenethiwekhi kwiJavaScript. Isebe leNode.js 21.0 liya kuxhaswa kwiinyanga ezi-6. Kwiintsuku ezizayo, ukuzinziswa kwesebe le-Node.js 20 kuya kugqitywa, eliya kufumana ubume be-LTS kwaye liya kuxhaswa kude kube ngu-Apreli 2026. Ukugcinwa kwesebe langaphambili le-LTS le-Node.js 18.0 liya kuhlala kude kube ngoSeptemba 2025, kunye nonyaka ongaphambi kwesebe le-LTS lokugqibela le-16.0 kude kube ngu-Apreli 2024.

Uphuculo oluphambili:

  • I-API ye-Fetch ibhengezwe njengezinzile, eyenzelwe ukulayisha izixhobo kwinethiwekhi kunye nokwenza lula ukubhalwa kwekhowudi ye-JavaScript yendawo yonke efanelekileyo yokusebenza kumncedisi kunye namacala omxumi. Ukuphunyezwa kusekelwe kwikhowudi evela kwi-HTTP/1.1 undici client kwaye isondele kangangoko kwi-API efanayo enikwe kwiziphequluli. I-API iquka indlela yokulanda () kunye nezinto ze Headers. Isicelo kunye neMpendulo, emele iiheader zeHTTP, isicelo kunye nempendulo. const res = linda ukulanda('https://nodejs.org/api/documentation.json'); ukuba (res.ok) { const data = linda res.json (); console.log(data); }
  • Inkxaso ye-WebStreams API, ebonelela ngokufikelela kwimithombo yedatha efunyenwe kwinethiwekhi, izinzile. I-API yenza ukuba ukongeza abaphangi bakho abasebenza ngedatha njengoko ulwazi lufika kwinethiwekhi, ngaphandle kokulinda ukuba ifayile yonke ikhutshelwe. Izinto ezikhoyo kwiNode.js ziquka i-ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream, kunye neDecompressionStream.
  • Kongezwe ukuphunyezwa kovavanyo lomthengi weWebSocket, ehambelana nezikhangeli. Ukuvumela inkxaso yeWebSocket, iflegi "- yovavanyo-websocket" inikezelwe.
  • Yongezwe indlela yovavanyo yokusebenzisa ukuphunyezwa okungagqibekanga kweemodyuli zeJavaScript ESM (Iimodyuli zeECMAScript, ezisetyenziswa kwiimodyuli zeebhrawuza) endaweni yeCommonJS (ithile kwiNode.js). Utshintsho aluyichaphazeli iminqongo efomati yayo ichazwe ngokucacileyo ngendawo "yohlobo" kwiphakheji.json, ecaciswe nge "--input-type" iflegi, okanye iyabonakala ngenxa yolwandiso lwefayile (.mjs ye ESM, .cjs yeCommonJS). Nangona kunjalo, iimodyuli ezingachazwanga ngokucacileyo njenge-CommonJS (umzekelo, zinesandiso ".js") ziya kuphathwa njengeemodyuli ze-ESM xa imo entsha ivuliwe. Ukuvula useto olutsha lwemodyuli, iflegi "--yovavanyo-ehlala ikho" icetyisiwe.
  • I-injini ye-V8 ihlaziywe kwi-version 11.8, esetyenziswe kwi-Chromium 118, ngoku ixhasa indlela ye-ArrayBuffer.prototype.transfer, ukukwazi ukudibanisa amaqela (i-groupBy method) kunye nemiyalelo ye-WebAssembly yokucubungula i-constants (i32.add, i32.sub, i32.mul, i64 .add, i64.sub kunye ne-i64.mul).
  • Inkxaso yomphathi we-globalPreload iyekisiwe, ngokuthanda ukubhalisa kunye nokuqalisa iifowuni ukumisela iimodyuli.
  • Ukhetho "lokugungxula" longezwe kumsebenzi we-fs.writeFile ukunyanzela idatha ukuba igungxulwe kwi-drive emva komsebenzi ngamnye wokubhala.
  • Ukusebenza okuphuculweyo kwekhowudi enxulumene nokwahlulahlula kwe-URL, landa i-API, imisinga, i-node:fs, kunye ne-HTTP.
  • Kongezwe into yokukhangela umhlaba. Ngokomzekelo, ukufumana idatha malunga nenani le-CPU cores, ungasebenzisa ipropathi ye-navigator.hardwareConcurrency.
  • Kwiparamitha ethi β€œ-test”, inkxaso yeemaski zeglowubhu yongezwe ekukhetheni iimvavanyo eziza kuqhuba (umzekelo, ungacacisa β€œβ€”test **/*.test.js.”).
  • Umphathi wephakheji ehlanganisiweyo npm 10.2.0 kunye ne-llhttp 9.1.2 parser zihlaziyiwe.
  • Inkxaso ye-Visual Studio 2019 kunye neenguqulelo ze-macOS ezindala kune-11.0 ziye zayekiswa.

Iqonga leNode.js lingasetyenziselwa zombini ukugcinwa kweseva yezicelo zeWebhu kunye nokudala umxhasi oqhelekileyo kunye neenkqubo zenethiwekhi zeseva. Ukwandisa ukusebenza kwezicelo zeNode.js, ingqokelela enkulu yeemodyuli ilungisiwe, apho unokufumana iimodyuli kunye nokuphunyezwa kweHTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 iiseva kunye nabaxhasi, iimodyuli zokudibanisa. kunye nezakhelo ezahlukeneyo zewebhu, i-WebSocket kunye ne-Ajax abaphathi , izixhumi ze-DBMS (MySQL, PostgreSQL, SQLite, MongoDB), ii-injini ze-templates, ii-injini ze-CSS, ukuphunyezwa kwe-crypto algorithms kunye neenkqubo zokugunyazwa (OAuth), ii-XML parsers.

Ukuqinisekisa ukusetyenzwa kwenani elikhulu lezicelo ezihambelanayo, i-Node.js isebenzisa imodeli yokwenziwa kwekhowudi engahambelaniyo esekwe kulawulo lwesiganeko esingavaliyo kunye nenkcazo yabaphathi be-callback. Iindlela ezixhaswayo zoqhagamshelo lokuphinda-phinda yi epoll, kqueue, /dev/poll, kwaye ukhethe. Ukuphinda-phinda uqhagamshelo, ilayibrari ye-libuv iyasetyenziswa, eyongezo ye-libev kwiinkqubo ze-Unix kunye ne-IOCP kwi-Windows. Ilayibrari ye-libeio isetyenziselwa ukwenza i-pool pool, kwaye i-c-ares idityaniswe ukwenza imibuzo ye-DNS kwimodi yokungathinteli. Zonke iifowuni zesistim ezibangela ukuvalwa ziphunyezwa ngaphakathi kwiphuli yentambo kwaye emva koko, njengabaphangi beempawu, bagqithisele iziphumo zomsebenzi wabo ngombhobho ongachazwanga gama (umbhobho). Ukuphunyezwa kwekhowudi yeJavaScript inikezelwa ngokusetyenziswa kwe-injini ye-V8 ephuhliswe yiGoogle (ukongeza, iMicrosoft iphuhlisa inguqulelo yeNode.js nge-injini ye-Chakra-Core).

Kwisiseko sayo, i-Node.js ifana nePerl AnyEvent, i-Ruby Event Machine, i-Python Twisted frameworks, kunye nokuphunyezwa kwesiganeko se-Tcl, kodwa i-loop yesiganeko kwi-Node.js ifihliwe kumphuhlisi kwaye ifana nokusingatha umcimbi kwisicelo sewebhu esisebenzayo. kwibhrawuza. Xa ubhala izicelo ze-node.js, kufuneka uqwalasele iinkcukacha zeprogram eqhutywa yisiganeko, umzekelo, endaweni yokwenza "var result = db.query("select..");" ngokulinda ukugqitywa komsebenzi kunye nokuqhutyelwa okulandelayo kweziphumo, i-Node.js isebenzisa umgaqo wokwenziwa kwe-asynchronous, i.e. ikhowudi iguqulwa ibe yi "db.query("select..", function (isiphumo) {result processing});", apho ulawulo luya kudlula ngokukhawuleza kwikhowudi eyongezelelweyo, kwaye umphumo wombuzo uya kucutshungulwa njengoko idatha ifika.

umthombo: opennet.ru

Yongeza izimvo