Node.js 23.0.0, in platfoarm foar it útfieren fan netwurkapplikaasjes yn JavaSkript, is frijlitten. Node.js 23.0 is klassifisearre as in tuskentûke, dy't 7 moannen sil wurde stipe (oant juny 2025). Yn 'e kommende dagen sil de stabilisaasje fan' e Node.js 22-tûke foltôge wurde, dy't op 29 oktober LTS-status krijt en sil wurde stipe oant april 2027. Stipe foar ferline LTS tûken fan Node.js 20.x en 18.x sil trochgean oant april 2026 en 2025, respektivelik.
Main ferbetterings:
- Eksperimintele stipe tafoege foar TypeScript, wêrtroch eksplisite type definysjes mooglik binne. Stipe is ynskeakele mei de opsjes "--eksperimintele-strip-typen" en "--eksperimintele-transformaasje-typen". Yn it gefal fan 'e earste opsje wurdt wurkjen mei TypeScript fermindere ta it wiskjen fan taalspesifike type definysjes (typekontrôle wurdt net útfierd, de koade wurdt gewoan omboud ta typeless JavaScript). De twadde opsje konvertearret guon TypeScript-syntaksis-eleminten, lykas enums en nammeromten, yn JavaScript-koade.
- Standert ynskeakele is de mooglikheid om de oprop "require ()" te brûken om JavaScript ESM-modules (ECMAScript-modules) yn syngroane modus te laden. ESM-modules wurde brûkt yn browsers en ferfange CommonJS-modules spesifyk foar Node.js. Om te laden fia "require ()" yn Node.js, de ESM module moat wurde útfierd syngroan (sûnder wachtsje op it boppeste nivo).
- Automatyske deteksje fan ESM-modules yn bestannen sûnder of mei de ".js"-útwreiding wurdt levere. Eartiids waarden sokke bestannen behannele as CommonJS-modules, útsein as har type eksplisyt oanjûn waard yn 'e package.json-bestân dy't yn deselde map leit ("type": "module"). Yn 'e nije ferzje, foar bestannen wêrfan it type net oanjûn is yn package.json, besiket it earst te laden as in CommonJS-module, en as dit mislearret, dan as in ESM-module.
- Eksperimintele ymplemintaasje tafoege kompatibel mei browsers De Web Storage API is ûntworpen foar oanhâldende (de localStorage-klasse) of tydlike (de sessionStorage-klasse) opslach fan kaai-/weardegegevens. It ynskeakeljen fan Web Storage-stipe fereasket it útfieren fan de API mei de flagge "--experimental-webstorage" en it oantsjutte fan it paad nei it opslachbestân mei de flagge "--localstorage-file".
- Eksperimintele SQLite API tafoege foar wurkjen mei databases mei de SQL-fraachtaal en opslach basearre op de SQLite-bibleteek. Neist it bewarjen fan de databank yn in bestân op skiif, kin it ek yn it ûnthâld pleatst wurde troch it opjaan fan ": ûnthâld:" ynstee fan de triemnamme. De earder neamde Web Storage API wurdt ek ymplementearre boppe op SQLite, wat resulteart yn de tafoeging fan SQLite as ôfhinklikens foar Node.js.
- It kommando "node -run" is stabyl ferklearre, ûntworpen om skripts út te fieren dy't definieare binne yn it package.json-bestân.
- Opsjonele stipe ymplementearre foar caching fan kompilearre koade op skiif om de lansearring fan modules signifikant te fersnellen. Caching is ynskeakele fia de NODE_COMPILE_CACHE omjouwingsfariabele. Wat it doel oanbelanget liket de funksje op it pakket v8-compile-cache, mar ferskilt yn hegere prestaasjes en stipe foar ESM-modules.
- It Buffer-objekt is optimalisearre om de prestaasjes fan de metoaden Buffer.copy() en Buffer.write() signifikant te ferheegjen.
- De prestaasjes fan 'e node: fs-module is ferbettere, wat ek it oantal oproppen nei C ++-koade ferminderet tidens operaasje.
- De V8-motor is bywurke nei ferzje 12.9, dy't wurdt brûkt yn Chromium 129.
- Stipe foar 32-bit Windows-systemen is fuorthelle.
- Troch de ynfiering fan funksjes definieare yn 'e C ++ 8-standert yn Node.js en de V20-motor binne de easken foar de GCC-kompilerferzje ferhege. It bouwen fan Node.js fereasket no op syn minst GCC 12.
It Node.js-platfoarm kin brûkt wurde foar sawol server-side stipe fan webapplikaasjes as foar it meitsjen fan standert kliïnt- en server-side netwurkprogramma's. Om de funksjonaliteit fan Node.js-applikaasjes út te wreidzjen, is in grutte kolleksje modules taret, ynklusyf dyjingen dy't ... ymplementearje servers en kliïnten fan HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, modules foar yntegraasje mei ferskate webframeworks, WebSocket- en Ajax-handlers, ferbiningen nei DBMS (MySQL, PostgreSQL, SQLite, MongoDB), sjabloanmotoren, CSS-motoren, ymplemintaasjes fan kryptografyske algoritmen en autorisaasjesystemen (OAuth), XML-parsers.
Foar in omgean grutte oantallen parallelle fersiken, Node.js brûkt in asynchronous koade útfiering model basearre op net-blokkearjende evenemint ferwurking en definiearje callback handlers. Stipe metoaden foar multiplexing ferbinings omfetsje epoll, kqueue, /dev/poll, en selektearje. Foar ferbiningsmultiplexing wurdt de libuv-bibleteek brûkt, dy't in tafoeging is foar libev op Unix-systemen en oan IOCP op Windows. De libeio-bibleteek wurdt brûkt om in threadpool te meitsjen, en c-ares is yntegreare om DNS-fragen út te fieren yn in net-blokkearjende modus. Alle systeemoproppen dy't blokkearje feroarsaakje, wurde útfierd binnen de threadpool en passe dan, lykas sinjaalbehannelers, it resultaat fan har wurk werom troch in net neamde piip.
Utfiering fan JavaScript-koade wurdt garandearre troch it brûken fan de V8-motor ûntwikkele troch Google (dêrneist ûntwikkelet Microsoft in ferzje fan Node.js mei de Chakra-Core-motor). Yn har kearn is Node.js fergelykber mei de Perl AnyEvent, Ruby Event Machine, Python Twisted frameworks en de ymplemintaasje fan eveneminten yn Tcl, mar de evenemintloop yn Node.js is ferburgen foar de ûntwikkelder en liket op evenemintferwurking yn in webapplikaasje rint yn browser.
Boarne: opennet.ru
