D'VerĂ«ffentlechung vum Node.js 20.0, eng Plattform fir Netzwierkapplikatiounen a JavaScript auszefĂ©ieren, ass stattfonnt. Node.js 20.0 gouf fir dĂ©i laang ĂnnerstĂ«tzungszweig zougewisen, awer dĂ«se Status gĂ«tt net bis Oktober zougewisen, no der StabilisĂ©ierung. Node.js 20.x gĂ«tt Ă«nnerstĂ«tzt bis den 30. AbrĂ«ll 2026. Ănnerhalt vun der viregter Node.js 18.x LTS Filial wĂ€ert bis AbrĂ«ll 2025 daueren, an dĂ©i frĂ©ier 16.x LTS Filial bis September 2023. D'14.x LTS Branche gĂ«tt den 30. AbrĂ«ll ofgebaut, an d'Node.js 19.x ZwĂ«schenzĂ€it den 1. Juni.
Main Verbesserungen:
- De V8-Motor gouf op d'Versioun 11.3 aktualisĂ©iert, dĂ©i am Chromium 113 benotzt gĂ«tt. Vun den Ănnerungen am Verglach zum Node.js 19 Branche, deen de Chromium 107-Motor benotzt huet, d'String.prototype.isWellFormed an toWellFormed Funktiounen, den Array.prototype an TypedArray.prototype Methoden fir eng Aarbecht mat Kopie op Ănnerung vun Array an TypedArray Objete, "v" FĂ€ndel an RegExp, ĂnnerstĂ«tzung fir Resizing ArrayBuffer an ErhĂ©ijung der GrĂ©isst vun SharedArrayBuffer, SchwĂ€if-Call an WebAssembly.
- En experimentellen Permission Model Mechanismus gĂ«tt proposĂ©iert deen Iech erlaabt den Zougang zu bestĂ«mmte Ressourcen wĂ€hrend der AusfĂ©ierung ze beschrĂ€nken. ĂnnerstĂ«tzung fir den Erlaabnismodell gĂ«tt aktivĂ©iert andeems Dir de FĂ€ndel "--experimentell-Erlaabnis" spezifizĂ©iert wann Dir leeft. An der initialer Ămsetzung goufen Optiounen proposĂ©iert fir Schreiwen (-allow-fs-write) a liesen (-allow-fs-read) Zougang zu verschiddenen Deeler vun der FS, Kannerprozesser (-allow-child-process) ze beschrĂ€nken. , Add-ons (--no-addons) an Threads (-allow-worker). Zum Beispill, fir an den /tmp Verzeichnis ze schreiwen an d'Datei /home/index.js ze liesen, kĂ«nnt Dir spezifizĂ©ieren: Node --experimental-permission --allow-fs-write=/tmp/ --allow-fs-read =/home/index.js index .js
Fir den Zougang z'iwwerpréiwen, gëtt proposéiert d'Method process.permission.has() ze benotzen, zum Beispill "process.permission.has('fs.write',"/tmp/test").
- Handler fir ECMAScript extern Moduler (ESMs) gelueden iwwer d'Optioun "--experimentell-Loader" ginn elo an engem getrennten Fuedem ausgefouert, isolĂ©iert vum Haaptthread, wat d'KrĂ€izung vum Applikatiounscode a gelueden ESM Moduler eliminĂ©iert. Ăhnlech wĂ©i Browser, gĂ«tt d'Methode import.meta.resolve() elo synchron ausgefouert wann se vun enger Applikatioun opgeruff ginn. An enger vun den nĂ€chste Filialen vun Node.js ass ESM Laden ĂnnerstĂ«tzung geplangt fir an d'Kategorie vu stabile Funktiounen geplĂ«nnert ze ginn.
- Den Node:test (test_runner) Modul, entwéckelt fir JavaScript Tester ze kreéieren an ze lafen, déi Resultater am TAP (Test Anything Protocol) Format zréckginn, gouf op stabil geplënnert.
- Eng separat Leeschtungsteam gouf geformt, déi als Virbereedung op déi nei Branche geschafft huet fir verschidde Runtime Komponenten ze beschleunegen, dorënner URL Parsing, fetch () an EventTarget. Zum Beispill ass d'Overhead vun der Initialiséierung vum EventTarget halbéiert ginn, d'Performance vun der URL.canParse () Method gouf wesentlech verbessert, an d'Effizienz vun den Timer gouf verbessert. ZousÀtzlech ass d'Verëffentlechung vun engem High-Performance URL Parser - Ada 2.0, geschriwwen an C ++, an der Zesummesetzung abegraff.
- D'EntwĂ©cklung vun enger experimenteller Feature fir Uwendungen a Form vun enger eenzeger ausfĂŒhrbarer Datei (SEA, Single Executable Applications) ze liwweren ass weidergaang. En ausfĂŒhrbar ze kreĂ©ieren erfuerdert elo e Blob ze ersetzen deen aus enger JSON Konfiguratiounsdatei generĂ©iert gĂ«tt (amplaz vun enger JavaScript Datei ze ersetzen).
- Verbesserte Web Crypto API Kompatibilitéit mat Implementatioune vun anere Projeten.
- Offiziell ĂnnerstĂ«tzung bĂ€igefĂŒĂŒgt Windows op ARM64 Systemer.
- Weider ĂnnerstĂ«tzung fir WASI (WebAssembly System Interface) Extensiounen fir Standalone WebAssembly Uwendungen ze kreĂ©ieren. Ewechzehuelen de Besoin e spezielle Kommando Linn FĂ€ndel ze uginn fir WASI ĂnnerstĂ«tzung ze aktivĂ©ieren.
D'Node.js Plattform kann souwuel fir Server-SĂ€it ĂnnerstĂ«tzung vu Webapplikatiounen wĂ©i och fir Standard Client- a Server-SĂ€it Netzwierkprogrammer benotzt ginn. Fir d'FunktionalitĂ©it vun Node.js Applikatiounen auszebauen, gouf eng grouss Sammlung vu Moduler virbereet, dorĂ«nner dĂ©i, dĂ©i ... implementĂ©ieren Serveren a Clienten vun HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, Moduler fir d'Integratioun mat verschiddene Web-Frameworks, WebSocket- an Ajax-Handler, Connectoren zu DBMS (MySQL, PostgreSQL, SQLite, MongoDB), Template-Engines, CSS-Engines, Implementatioune vu kryptographeschen Algorithmen an Autorisatiounssystemer (OAuth), XML-Parseren.
Fir eng grouss Zuel vu parallelen Ufroen ze handhaben, benotzt Node.js en asynchrone Code-AusfĂ©ierungsmodell basĂ©iert op net-blockĂ©ierender Eventveraarbechtung an Callback-Handler. ĂnnerstĂ«tzte Verbindungsmultiplexingmethoden enthalen epoll, kqueue, /dev/poll a select. D'libuv-BibliothĂ©ik, dĂ©i e Superset vu libev op Unix-Systemer an IOCP op IOCP ass, gĂ«tt fir Verbindungsmultiplexing benotzt. WindowsD'libeio-BibliothĂ©ik gĂ«tt benotzt fir en Threadpool ze kreĂ©ieren, an c-ares ass integrĂ©iert fir DNS-Ufroen am net-blockĂ©ierende Modus duerchzefĂ©ieren. All Blocking-Systemuriff ginn am Threadpool ausgefĂ©iert a ginn dann, wĂ©i Signalhandler, hir Resultater iwwer eng onbenannt Pipe zrĂ©ck. D'JavaScript-AusfĂ©ierung gĂ«tt vum V8-Motor vu Google geliwwert (Microsoft entwĂ©ckelt och eng Variant vun Node.js mam Chakra-Core-Motor).
Am KĂ€r ass Node.js Ă€hnlech wĂ©i de Perl AnyEvent, Ruby Event Machine, Python Twisted Frameworks, an d'Tcl Event Implementatioun, awer d'Event Loop am Node.js ass vum EntwĂ©ckler verstoppt a glĂ€icht Eventhandhabung an enger Webapplikatioun dĂ©i leeft am Browser. Wann Dir Applikatiounen fir node.js schreift, musst Dir d'SpezifizitĂ©ite vun der Event-Undriff ProgrammĂ©ierung berĂŒcksichtegen, zum Beispill, anstatt "var result = db.query ("wielt ..");" mat der Erwaardung vun der Aarbecht an der spĂ©iderer Veraarbechtung vun de Resultater, benotzt Node.js de Prinzip vun der asynchroner AusfĂ©ierung, d.h. de Code gĂ«tt transformĂ©iert an "db.query ("wielt ..", Funktioun (Resultat) {Resultatveraarbechtung});", an dĂ€r d'Kontroll direkt op weidere Code passĂ©iert, an d'Ufroresultat gĂ«tt veraarbecht wĂ©i d'Daten ukommen.
Source: opennet.ru
