Saadaval on serveripoolne JavaScripti platvorm Node.js 21.0

Välja anti Node.js 21.0, platvorm võrgurakenduste käitamiseks JavaScriptis. Node.js 21.0 haru toetatakse 6 kuud. Lähipäevil jõuab lõpule Node.js 20 haru stabiliseerimine, mis saab LTS staatuse ja mida toetatakse kuni 2026. aasta aprillini. Node.js 18.0 eelmise LTS-haru hooldus kestab 2025. aasta septembrini ja üle-eelmine LTS-i haru 16.0 kuni 2024. aasta aprillini.

Peamised täiustused:

  • Fetch API on kuulutatud stabiilseks, mõeldud ressursside laadimiseks üle võrgu ja universaalse JavaScripti koodi kirjutamise lihtsustamiseks, mis sobib nii serveri kui ka kliendi poolel töötamiseks. Teostus põhineb HTTP/1.1 undici kliendi koodil ja on võimalikult lähedane sarnasele brauserites pakutavale API-le. API sisaldab meetodit fetch() ja päiseobjekte. Taotlus ja vastus, mis esindavad HTTP päiseid, taotlust ja vastust. const res = oodake tõmbamist('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = oodake res.json(); konsool.log(andmed); }
  • WebStreams API tugi, mis võimaldab juurdepääsu võrgu kaudu vastuvõetud andmevoogudele, on stabiliseerunud. API võimaldab lisada oma töötlejaid, mis töötavad andmetega, kui teave üle võrgu saabub, ootamata kogu faili allalaadimist. Node.js-s saadaolevate objektide hulka kuuluvad ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream ja DecompressionStream.
  • Lisatud WebSocketi kliendi eksperimentaalne juurutamine, mis ühildub brauseritega. WebSocketi toe lubamiseks kuvatakse lipp "--experimental-websocket".
  • Lisati eksperimentaalne režiim JavaScripti moodulite ESM (ECMAScript Modules, kasutatakse brauserite moodulites) vaikerakenduse kasutamiseks CommonJS-i (spetsiifiline Node.js-ile) asemel. Muudatus ei mõjuta mooduleid, mille vorming on sõnaselgelt määratletud faili package.json välja "tüüp" kaudu, määratud lipuga "--input-type" või on ilmne faililaiendi tõttu (.mjs ESM-i jaoks, .cjs CommonJS jaoks). Mooduleid, mis ei ole sõnaselgelt määratletud kui CommonJS (näiteks millel on laiend „.js”), käsitletakse uue režiimi lubamisel ESM-moodulitena. Uute mooduli sätete aktiveerimiseks on pakutud lipp "--eksperimentaalne-vaiketüüp".
  • V8 mootor on värskendatud versioonile 11.8, mida kasutatakse Chromium 118-s, mis toetab nüüd meetodit ArrayBuffer.prototype.transfer, võimalust massiive rühmitada (groupBy meetod) ja WebAssembly juhiseid konstantide töötlemiseks (i32.add, i32.sub, i32.mul, i64 .add, i64.sub ja i64.mul).
  • GlobalPreload töötleja tugi on lõpetatud, moodulite konfigureerimise kõnede registreerimiseks ja lähtestamiseks.
  • Funktsioonile fs.writeFile on lisatud suvand "loputus", et sundida andmeid pärast iga kirjutamistoimingut draivi loputama.
  • URL-i sõelumise, toomise API, voogude, node:fs ja HTTP-ga seotud koodi täiustatud jõudlus.
  • Lisatud globaalne navigaatori objekt. Näiteks protsessori tuumade arvu kohta andmete saamiseks võite kasutada atribuuti navigator.hardwareConcurrency.
  • Parameetrisse "—test" on käivitatavate testide valimiseks lisatud glob maskide tugi (näiteks saate määrata "—test **/*.test.js.").
  • Komplekteeritud paketihaldurit npm 10.2.0 ja llhttp 9.1.2 parserit on värskendatud.
  • Visual Studio 2019 ja MacOS-i versioonide, mis on vanemad kui 11.0, tugi on lõpetatud.

Node.js platvormi saab kasutada nii veebirakenduste serverihoolduseks kui ka tavaliste kliendi- ja serverivõrguprogrammide loomiseks. Node.js-i rakenduste funktsionaalsuse laiendamiseks on koostatud suur moodulite kogu, millest leiate HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 serverite ja klientide juurutusega moodulid, integreerimise moodulid erinevate veebiraamistike, WebSocketi ja Ajaxi töötlejate, DBMS-i konnektorite (MySQL, PostgreSQL, SQLite, MongoDB), mallimootorite, CSS-mootorite, krüptoalgoritmide ja autoriseerimissüsteemide (OAuth) juurutuste, XML-i parseritega.

Suure hulga paralleelsete päringute töötlemise tagamiseks kasutab Node.js asünkroonse koodi täitmismudelit, mis põhineb sündmuste mitteblokeerimisel ja tagasihelistajate definitsioonil. Ühenduste multipleksimise toetatud meetodid on epoll, kqueue, /dev/poll ja select. Ühenduse multipleksimiseks kasutatakse libuv teeki, mis on lisandmoodul libevi jaoks Unixi süsteemides ja IOCP jaoks Windowsis. Libeio teeki kasutatakse lõimekogumi loomiseks ja c-ares on integreeritud DNS-päringute tegemiseks mitteblokeerivas režiimis. Kõik blokeerimist põhjustavad süsteemikutsed teostatakse lõimekogumi sees ja seejärel edastavad sarnaselt signaalikäsitlejatele oma töö tulemuse nimetu toru (toru) kaudu tagasi. JavaScripti koodi täitmine on tagatud Google’i poolt välja töötatud V8 mootori kasutamise kaudu (lisaks arendab Microsoft Chakra-Core mootoriga Node.js versiooni).

Oma põhiolemuselt sarnaneb Node.js Perl AnyEvent, Ruby Event Machine, Python Twisted raamistikega ja Tcl sündmuste juurutusega, kuid Node.js-i sündmusesilmus on arendaja eest peidetud ja sarnaneb sündmuste käsitlemisega töötavas veebirakenduses brauseris. Node.js-i rakenduste kirjutamisel peate arvestama näiteks sündmustepõhise programmeerimise spetsiifikaga, selle asemel, et teha "var result = db.query("select..");" töö valmimise ootamisega ja sellele järgneva tulemuste töötlemisega kasutab Node.js asünkroonse täitmise põhimõtet, st. kood teisendatakse "db.query("select..", funktsiooniks (result) {tulemuse töötlemine});", milles juhtimine läheb koheselt edasi edasisele koodile ja päringu tulemust töödeldakse andmete saabudes.

Allikas: opennet.ru

Lisa kommentaar