Inkundla ye-JavaScript eseceleni kweseva i-Node.js 21.0 iyatholakala

I-Node.js 21.0 ikhishwe, inkundla yokusebenzisa izinhlelo zokusebenza zenethiwekhi ku-JavaScript. Igatsha le-Node.js 21.0 lizosekelwa izinyanga ezingu-6. Ezinsukwini ezizayo, ukuzinza kwegatsha le-Node.js 20 kuzoqedwa, elizothola isimo se-LTS futhi lizosekelwa kuze kube ngu-April 2026. Ukugcinwa kwegatsha langaphambilini le-LTS le-Node.js 18.0 kuzohlala kuze kube uSepthemba 2025, kanye nonyaka ngaphambi kwegatsha le-LTS lokugcina 16.0 kuze kube ngu-Ephreli 2024.

Ukuthuthukiswa okuyinhloko:

  • I-Fetch API imenyezelwe ukuthi izinzile, yakhelwe ukulayisha izinsiza ngenethiwekhi nokwenza lula ukubhalwa kwekhodi yendawo yonke ye-JavaScript elungele ukusebenza kuseva nezinhlangothi zeklayenti. Ukuqaliswa kusekelwe kukhodi evela kuklayenti le-HTTP/1.1 undici futhi kuseduze ngangokunokwenzeka ku-API efanayo enikezwe kuziphequluli. I-API ihlanganisa indlela yokulanda() kanye nezinto zeHeda. Isicelo Nempendulo, emele izihloko ze-HTTP, isicelo kanye nempendulo. const res = lindela ukulanda('https://nodejs.org/api/documentation.json'); uma (res.ok) { const data = await res.json(); console.log(idatha); }
  • Ukusekelwa kwe-WebStreams API, enikeza ukufinyelela ekusakazweni kwedatha etholwe ngenethiwekhi, kuzinzile. I-API yenza kube nokwenzeka ukungeza izibambi zakho ezisebenza ngedatha njengoba ulwazi lufika ngenethiwekhi, ngaphandle kokulinda ukuthi lonke ifayela lilandwe. Izinto ezitholakala ku-Node.js zifaka i-ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream, kanye ne-DecompressionStream.
  • Kwengezwe ukuqaliswa kokuhlolwa kweklayenti le-WebSocket, elisebenzisana neziphequluli. Ukuze unike amandla ukusekela kwe-WebSocket, ifulegi elithi “--experimental-websocket” liyanikezwa.
  • Kwengezwe imodi yokuhlola yokusebenzisa ukusetshenziswa okuzenzakalelayo kwamamojula we-JavaScript ESM (ECMAScript Modules, asetshenziswa kumamojula eziphequluli) esikhundleni se-CommonJS (eqondiswe ku-Node.js). Ushintsho aluwathinti amamojula ifomethi yawo echazwa ngokucacile ngenkambu ethi "uhlobo" ku-package.json, ecaciswe ngefulegi "--input-type", noma isobala ngenxa yesandiso sefayela (.mjs ye-ESM, .cjs ye-CommonJS). Nokho, amamojula angachazwanga ngokusobala njenge-CommonJS (ngokwesibonelo, anesandiso esithi “.js”) azophathwa njengamamojula e-ESM lapho imodi entsha inikwe amandla. Ukuze uvule izilungiselelo zemojuli entsha, ifulegi elithi “--experimental-default-type” liphakanyisiwe.
  • Injini ye-V8 ibuyekezelwe kunguqulo 11.8, esetshenziswe ku-Chromium 118, manje esekela indlela ye-ArrayBuffer.prototype.transfer, ikhono lokuqoqa ama-arrays (indlela ye-groupBy) kanye nemiyalo ye-WebAssembly yokucubungula okungaguquki (i32.add, i32.sub, i32.mul, i64 .add, i64.sub kanye ne-i64.mul).
  • Ukusekelwa kwesibambi se-globalPreload kunqanyuliwe, kuvumela ukubhalisa nokuqalisa izingcingo ukuze ulungiselele amamojula.
  • Inketho ethi "flush" yengezwe kumsebenzi we-fs.writeFile ukuphoqa idatha ukuthi ihanjiswe kudrayivu ngemva komsebenzi ngamunye wokubhala.
  • Ukusebenza okuthuthukisiwe kwekhodi okuhlobene nokuhlaziya i-URL, ukulanda i-API, ukusakaza, i-node:fs, ne-HTTP.
  • Kwengezwe into ye-global navigator. Isibonelo, ukuze uthole idatha mayelana nenani lama-CPU cores, ungasebenzisa impahla ye-navigator.hardwareConcurrency.
  • Kupharamitha ethi “—test”, usekelo lwamamaski eglobhu lwengeziwe ukuze kukhethwe izivivinyo ozozisebenzisa (ngokwesibonelo, ungacacisa “—test **/*.test.js.”).
  • Umphathi wephakheji oyinqwaba npm 10.2.0 kanye nomhlahleli we-llhttp 9.1.2 kubuyekeziwe.
  • Ukusekelwa kwe-Visual Studio 2019 nezinguqulo ze-macOS ezindala kuno-11.0 kunqanyuliwe.

Iplatifomu ye-Node.js ingasetshenziswa kokubili ukulungisa iseva yezinhlelo zokusebenza zeWebhu kanye nokudala izinhlelo ezijwayelekile zeklayenti nenethiwekhi yeseva. Ukwandisa ukusebenza kwezinhlelo zokusebenza ze-Node.js, iqoqo elikhulu lamamojula selilungisiwe, lapho ungathola khona amamojula ngokusetshenziswa kwe-HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 amaseva namaklayenti, amamojula okuhlanganiswa. enezinhlaka ezehlukene zewebhu, izibambi ze-WebSocket ne-Ajax, izixhumi ze-DBMS (MySQL, PostgreSQL, SQLite, MongoDB), izinjini zesifanekiso, izinjini ze-CSS, ukuqaliswa kokusebenza kwe-crypto algorithms nezinhlelo zokugunyaza (OAuth), abahlaluli be-XML.

Ukuqinisekisa ukucutshungulwa kwezicelo eziningi ezifanayo, i-Node.js isebenzisa imodeli yokusebenzisa ikhodi engavumelaniyo esuselwe ekuphatheni umcimbi ongavimbi kanye nencazelo yabaphathi be-callback. Izindlela ezisekelwayo zoxhumano lokuphindaphinda i-epoll, i-kqueue, /dev/poll, bese ukhetha. Ukuze kuxhunywe ukuphindaphindeka, kusetshenziswa umtapo wezincwadi we-libuv, okuyisengezo se-libev ezinhlelweni ze-Unix kanye ne-IOCP ku-Windows. Umtapo wezincwadi we-libeio usetshenziselwa ukudala i-thread pool, ama-c-ares ahlanganiswe ukwenza imibuzo ye-DNS kumodi engavimbeli. Zonke izingcingo zesistimu ezibangela ukuvinjwa zenziwa ngaphakathi kwechibi lezintambo bese, njengezibambi zesignali, zidlulisele umphumela womsebenzi wazo ngepayipi elingashiwongo (ipayipi). Ukwenziwa kwekhodi ye-JavaScript kunikezwa ngokusetshenziswa kwenjini ye-V8 eyakhiwe i-Google (ngaphezu kwalokho, i-Microsoft ithuthukisa inguqulo ye-Node.js ngenjini ye-Chakra-Core).

Emgogodleni wayo, i-Node.js ifana nePerl AnyEvent, Ruby Event Machine, Python Twisted frameworks, kanye nokuqaliswa komcimbi we-Tcl, kodwa iluphu yomcimbi ku-Node.js ifihliwe kunjiniyela futhi ifana nokuphathwa komcimbi ohlelweni lokusebenza lwewebhu olusebenzayo. kusiphequluli. Lapho ubhala izinhlelo zokusebenza ze-node.js, udinga ukucabangela imininingwane yohlelo oluqhutshwa umcimbi, isibonelo, esikhundleni sokwenza "var result = db.query("select..");" ngokulinda ukuqedwa komsebenzi kanye nokucutshungulwa okulandelayo kwemiphumela, i-Node.js isebenzisa isimiso sokubulawa okuvumelanayo, i.e. ikhodi iguqulelwa ku-"db.query("select..", function (umphumela) {result processing});", lapho ukulawula kuzodlula khona manjalo kukhodi eqhubekayo, futhi umphumela wombuzo uzocutshungulwa njengoba idatha ifika.

Source: opennet.ru

Engeza amazwana