Node.js 23.0 platvorm on avaldatud koos TypeScripti keele esialgse toega

Välja on antud JavaScriptis võrgurakenduste käitamise platvorm Node.js 23.0.0. Node.js 23.0 on klassifitseeritud vaheharuks, mida toetatakse 7 kuud (kuni juunini 2025). Lähipäevil jõuab lõpule Node.js 22 haru stabiliseerimine, mis saab LTS staatuse 29. oktoobril ja mida toetatakse 2027. aasta aprillini. Varasemate Node.js 20.x ja 18.x LTS-i harude tugi jätkub vastavalt 2026. ja 2025. aasta aprillini.

Peamised täiustused:

  • Lisatud on TypeScripti eksperimentaalne tugi, mis võimaldab selgesõnalisi tüübimääratlusi. Tugi on lubatud suvandite "--experimental-strip-types" ja "--experimental-transform-types" abil. Esimese variandi puhul taandub töö TypeScriptiga keelepõhiste tüübidefinitsioonide puhastamisele (tüübikontrolli ei teostata, kood teisendatakse lihtsalt tüübivabaks JavaScriptiks). Teine valik teisendab mõned TypeScripti süntaksielemendid, nagu enumid ja nimeruumid, JavaScripti koodiks.
  • Vaikimisi on lubatud JavaScripti ESM-moodulite (ECMAScripti moodulite) sünkroonrežiimis laadimiseks kõne „require()” kasutamine. ESM-mooduleid kasutatakse brauserites ja need asendavad Node.js-i spetsiifilisi CommonJS-mooduleid. Node.js-i "require()" kaudu laadimiseks tuleb ESM-moodul käivitada sünkroonselt (ülatasemel ootamata).
  • Pakutakse ESM-moodulite automaatset tuvastamist failides ilma laiendita .js või selle laiendiga. Varem käsitleti selliseid faile CommonJS-i moodulitena, välja arvatud juhul, kui nende tüüp oli samas kataloogis asuvas failis package.json selgesõnaliselt määratud ("tüüp": "moodul"). Uues versioonis proovib faile, mille tüüpi pole failis package.json määratud, esmalt laadida CommonJS-moodulina ja kui see ebaõnnestub, siis ESM-moodulina.
  • Lisatud eksperimentaalne rakendamine brauseritega ühilduv Veebisalvestuse API on loodud võtme-/väärtusandmete püsivaks (klass localStorage) või ajutiseks (klass sessionStorage) salvestamiseks. Veebisalvestuse toe lubamiseks tuleb API käivitada lipuga "--experimental-webstorage" ja määrata salvestusfaili tee lipuga "--localstorage-file".
  • Lisatud eksperimentaalne SQLite API andmebaasidega töötamiseks, kasutades SQL päringukeelt ja SQLite teegil põhinevat salvestusruumi. Lisaks sellele, et andmebaas salvestatakse failis kettale, saab selle ka mällu paigutada, määrates failinime asemel “:memory:”. Eespool mainitud Web Storage API on samuti rakendatud SQLite'i peale, mille tulemusena lisatakse SQLite Node.js-i sõltuvusena.
  • Käsk “node —run” on kuulutatud stabiilseks, mis on loodud failis package.json määratletud skriptide käitamiseks.
  • Rakendatud valikuline tugi kompileeritud koodi kettale vahemällu salvestamiseks, et kiirendada oluliselt moodulite käivitamist. Vahemällu salvestamine on lubatud keskkonnamuutuja NODE_COMPILE_CACHE kaudu. Oma eesmärgi poolest sarnaneb funktsioon v8-compile-cache paketiga, kuid erineb suurema jõudluse ja ESM-moodulite toe poolest.
  • Puhverobjekti on optimeeritud, et oluliselt suurendada meetodite Buffer.copy() ja Buffer.write() jõudlust.
  • Täiustatud on node:fs mooduli jõudlust, mis vähendab ka C++ koodi kõnede arvu töötamise ajal.
  • V8 mootor on värskendatud versioonile 12.9, mida kasutatakse Chromium 129-s.
  • 32-bitiste Windowsi süsteemide tugi on eemaldatud.
  • Seoses C++8 standardis määratletud funktsioonide kasutuselevõtuga Node.js-is ja V20 mootoris on GCC kompilaatori versiooni nõuded tõstetud. Node.js loomiseks on nüüd vaja vähemalt GCC 12.

Node.js platvormi saab kasutada nii veebirakenduste serveripoolseks toetamiseks kui ka standardsete kliendi- ja serveripoolsete võrguprogrammide loomiseks. Node.js rakenduste funktsionaalsuse laiendamiseks on ette valmistatud suur moodulite kogum, sealhulgas need, mis rakendavad serverid ja HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 kliendid, moodulid integreerimiseks erinevate veebiraamistikega, WebSocket ja Ajax käitlejad, ühendusmoodulid andmebaasisüsteemidega (MySQL, PostgreSQL, SQLite, MongoDB), mallimootorid, CSS-mootorid, krüptograafiliste algoritmide ja autoriseerimissüsteemide (OAuth) implementatsioonid, XML-parserid.

Suure hulga paralleelsete päringute käsitlemiseks kasutab Node.js asünkroonse koodi täitmismudelit, mis põhineb sündmuste mitteblokeerimisel töötlemisel ja tagasihelistamise töötlejate määratlemisel. Ühenduste multipleksimise toetatud meetodid on epoll, kqueue, /dev/poll ja select. Ühenduse multipleksimiseks kasutatakse libuv teeki, mis on Unixi süsteemides libevi ja Windowsis IOCP lisand. 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õimekogumis ja seejärel edastavad sarnaselt signaalitöötlejatele oma töö tulemuse nimetu toru kaudu tagasi.

JavaScripti koodi täitmine on tagatud Google’i poolt arendatud V8 mootori kasutamisega (lisaks arendab Microsoft Chakra-Core mootoriga Node.js versiooni). Oma olemuselt sarnaneb Node.js Perl AnyEvent, Ruby Event Machine, Python Twisted raamistikega ja sündmuste juurutamisega Tcl-is, kuid Node.js-i sündmusesilmus on arendaja eest peidetud ja sarnaneb sündmuste töötlemisega veebirakenduses töötab brauseris.

Allikas: opennet.ru

Lisa kommentaar