Bedienerkant JavaScript-platform Node.js 20.0 beskikbaar

Die vrystelling van Node.js 20.0, 'n platform vir die uitvoering van netwerktoepassings in JavaScript, het plaasgevind. Node.js 20.0 is aan die lang ondersteuningstak toegewys, maar hierdie status sal eers in Oktober, na stabilisering, toegeken word. Node.js 20.x sal tot 30 April 2026 ondersteun word. Instandhouding van die vorige Node.js 18.x LTS-tak sal tot April 2025 duur, en die vorige 16.x LTS-tak tot September 2023. Die 14.x LTS-tak sal op 30 April in stand gehou word, en die Node.js 19.x-tussentydse tak op 1 Junie.

Belangrikste verbeterings:

  • Die V8-enjin is opgedateer na weergawe 11.3, wat in Chromium 113 gebruik word. Van die veranderinge in vergelyking met die Node.js 19-tak, wat die Chromium 107-enjin gebruik het, die String.prototype.isWellFormed en toWellFormed funksies, die Array.prototype en TypedArray.prototype metodes om te werk met kopie op verandering van Array en TypedArray voorwerpe, "v" vlag in RegExp, ondersteuning vir die grootte van ArrayBuffer en die verhoging van die grootte van SharedArrayBuffer, stert-oproep in WebAssembly.
  • 'n Eksperimentele Toestemmingsmodelmeganisme word voorgestel wat jou toelaat om toegang tot sekere hulpbronne tydens uitvoering te beperk. Toestemming Model-ondersteuning word geaktiveer deur die "--eksperimentele-toestemming"-vlag te spesifiseer wanneer dit loop. In die aanvanklike implementering is opsies voorgestel om skryf- (--laat-fs-skryf) en lees- (-laat-toe-fs-lees) toegang tot sekere dele van die FS, kinderprosesse (--laat-kind-proses) te beperk. , byvoegings (--geen-byvoegings) en drade (--laat-werker). Byvoorbeeld, om toe te laat om na die /tmp-gids te skryf en die /home/index.js-lΓͺer te lees, kan jy spesifiseer: node --experimental-permission --allow-fs-write=/tmp/ --allow-fs-read =/home/index.js indeks .js

    Om toegang na te gaan, word voorgestel om die process.permission.has() metode te gebruik, byvoorbeeld, "process.permission.has('fs.write',"/tmp/test").

  • Hanteerders vir ECMAScript eksterne modules (ESM's) wat via die "--eksperimentele-laaier" opsie gelaai word, word nou uitgevoer in 'n aparte draad, geΓ―soleer van die hoofdraad, wat die kruising van toepassingskode en gelaaide ESM-modules uitskakel. Soortgelyk aan blaaiers, word die import.meta.resolve()-metode nou sinchronies uitgevoer wanneer dit van binne 'n toepassing opgeroep word. In een van die volgende takke van Node.js word beplan om ESM-laaiondersteuning na die kategorie stabiele kenmerke te verskuif.
  • Die node:toets (test_runner) module, wat ontwerp is om JavaScript-toetse te skep en uit te voer wat resultate in TAP (Test Anything Protocol)-formaat gee, is na stabiel geskuif.
  • 'n Afsonderlike prestasiespan is gevorm, wat ter voorbereiding vir die nuwe tak gewerk het om verskeie looptydkomponente te bespoedig, insluitend URL-ontleding, haal() en EventTarget. Byvoorbeeld, die bokoste van die inisialiseer van die EventTarget is gehalveer, die werkverrigting van die URL.canParse() metode is aansienlik verbeter, en die doeltreffendheid van die tydtellers is verbeter. Daarbenewens is die vrystelling van 'n hoΓ«prestasie-URL-ontleder - Ada 2.0, geskryf in C ++, by die samestelling ingesluit.
  • Die ontwikkeling van 'n eksperimentele kenmerk vir die lewering van toepassings in die vorm van 'n enkele uitvoerbare lΓͺer (SEA, Single Executable Applications) is voortgesit. Die skep van 'n uitvoerbare lΓͺer vereis nou die vervanging van 'n blob wat uit 'n JSON-konfigurasielΓͺer gegenereer is (in plaas daarvan om 'n JavaScript-lΓͺer te vervang).
  • Verbeterde Web Crypto API-versoenbaarheid met implementerings van ander projekte.
  • Amptelike ondersteuning bygevoeg Windows op ARM64-stelsels.
  • Voortgesette ondersteuning vir WASI (WebAssembly System Interface) uitbreidings vir die skep van selfstandige WebAssembly toepassings. Verwyder die behoefte om 'n spesiale opdragreΓ«lvlag te spesifiseer om WASI-ondersteuning te aktiveer.

Die Node.js-platform kan gebruik word vir beide bedienerkant-ondersteuning van webtoepassings en vir die skep van standaard kliΓ«nt- en bedienerkant-netwerkprogramme. Om die funksionaliteit van Node.js-toepassings uit te brei, is 'n groot versameling modules voorberei, insluitend diΓ© wat ... implementeer. bedieners en kliΓ«nte van HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, modules vir integrasie met verskeie webraamwerke, WebSocket- en Ajax-hanteerders, verbindings met DBMS (MySQL, PostgreSQL, SQLite, MongoDB), sjabloon-enjins, CSS-enjins, implementerings van kriptografiese algoritmes en magtigingstelsels (OAuth), XML-ontleders.

Om groot getalle parallelle versoeke te hanteer, gebruik Node.js 'n asynchrone kode-uitvoeringsmodel gebaseer op nie-blokkerende gebeurtenisverwerking en terugroephanterers. Verbindingsmultiplekseringsmetodes wat ondersteun word, sluit in epoll, kqueue, /dev/poll en select. Die libuv-biblioteek, wat 'n superstel van libev op Unix-stelsels en IOCP op IOCP is, word gebruik vir verbindingsmultipleksering. WindowsDie libeio-biblioteek word gebruik om 'n draadpoel te skep, en c-ares is geΓ―ntegreer om DNS-navrae in nie-blokkerende modus uit te voer. Alle blokkerende stelseloproepe word binne die draadpoel uitgevoer en stuur dan, soos seinhanteerders, hul resultate via 'n naamlose pyp terug. JavaScript-uitvoering word verskaf deur Google se V8-enjin (Microsoft ontwikkel ook 'n variant van Node.js met die Chakra-Core-enjin).

In sy kern is Node.js soortgelyk aan die Perl AnyEvent, Ruby Event Machine, Python Twisted-raamwerke en die Tcl-gebeurtenisimplementering, maar die gebeurtenislus in Node.js is weggesteek vir die ontwikkelaar en lyk soos gebeurtenishantering in 'n webtoepassing wat loop in blaaier. Wanneer u toepassings vir node.js skryf, moet u die besonderhede van gebeurtenisgedrewe programmering oorweeg, byvoorbeeld, in plaas daarvan om "var result = db.query("select..");" te doen. met wag vir voltooiing van werk en daaropvolgende verwerking van resultate, gebruik Node.js die beginsel van asynchrone uitvoering, m.a.w. die kode word getransformeer na "db.query("selekteer..", funksie (resultaat) {resultaatverwerking});", waarin beheer onmiddellik na verdere kode sal oorgaan, en die navraagresultaat sal verwerk word soos data aankom.

Bron: opennet.ru

Koop betroubare hosting vir werwe met DDoS-beskerming, VPS VDS-bedieners πŸ”₯ Koop betroubare webwerfhosting met DDoS-beskerming, VPS VDS-bedieners | ProHoster