Node.js 23.0-platform is gepubliseer met aanvanklike ondersteuning vir die TypeScript-taal

Node.js 23.0.0, 'n platform om netwerktoepassings in JavaScript te laat loop, is vrygestel. Node.js 23.0 word geklassifiseer as 'n intermediêre tak, wat vir 7 maande (tot Junie 2025) ondersteun sal word. In die komende dae sal die stabilisering van die Node.js 22-tak voltooi word, wat op 29 Oktober LTS-status sal ontvang en tot April 2027 ondersteun sal word. Ondersteuning vir vorige LTS-takke van Node.js 20.x en 18.x sal voortgaan tot onderskeidelik April 2026 en 2025.

Belangrikste verbeterings:

  • Bygevoeg eksperimentele ondersteuning vir TypeScript, wat eksplisiete tipe definisies toelaat. Ondersteuning word geaktiveer deur die "--eksperimentele-strook-tipes" en "--eksperimentele-transformasie-tipes" opsies te gebruik. In die geval van die eerste opsie, word werk met TypeScript verminder tot die skoonmaak van taalspesifieke tipe definisies (tipe kontrole word nie uitgevoer nie, die kode word eenvoudig omgeskakel na tiklose JavaScript). Die tweede opsie omskep sommige TypeScript-sintaksiselemente, soos enums en naamruimtes, in JavaScript-kode.
  • By verstek geaktiveer is die vermoë om die "require()"-oproep te gebruik om JavaScript ESM-modules (ECMAScript-modules) in sinchroniese modus te laai. ESM-modules word in blaaiers gebruik en vervang CommonJS-modules spesifiek vir Node.js. Om via "require()" in Node.js te laai, moet die ESM-module sinchronies uitgevoer word (sonder om op die boonste vlak te wag).
  • Outomatiese opsporing van ESM-modules in lêers sonder of met die ".js"-uitbreiding word verskaf. Voorheen is sulke lêers as CommonJS-modules behandel, tensy hul tipe uitdruklik gespesifiseer is in die package.json-lêer wat in dieselfde gids geleë is (“tipe”: “module”). In die nuwe weergawe, vir lêers waarvan die tipe nie in package.json gespesifiseer is nie, probeer dit eers as 'n CommonJS-module laai, en as dit misluk, dan as 'n ESM-module.
  • Eksperimentele implementering bygevoeg versoenbaar met blaaiers Die Webberging API is ontwerp vir volgehoue ​​(die localStorage-klas) of tydelike (die sessionStorage-klas) berging van sleutel-/waardedata. Om Webberging-ondersteuning te aktiveer, moet die API met die "--experimental-webstorage"-vlag uitgevoer word en die pad na die bergingslêer gespesifiseer word met behulp van die "--localstorage-file"-vlag.
  • Eksperimentele SQLite API bygevoeg om met databasisse te werk deur die SQL-navraagtaal en berging gebaseer op die SQLite-biblioteek te gebruik. Benewens die stoor van die databasis in 'n lêer op skyf, kan dit ook in die geheue geplaas word deur ":memory:" in plaas van die lêernaam te spesifiseer. Die voorgenoemde Web Storage API word ook bo-op SQLite geïmplementeer, wat lei tot die byvoeging van SQLite as 'n afhanklikheid vir Node.js.
  • Die "node —run"-opdrag is stabiel verklaar, ontwerp om skrifte te laat loop wat in die package.json-lêer gedefinieer is.
  • Opsionele ondersteuning geïmplementeer vir die cache van saamgestelde kode op skyf om die bekendstelling van modules aansienlik te bespoedig. Kas is geaktiveer via die NODE_COMPILE_CACHE omgewingsveranderlike. Wat die doel daarvan betref, lyk die funksie soos die v8-compile-cache-pakket, maar verskil in hoër werkverrigting en ondersteuning vir ESM-modules.
  • Die Buffer-voorwerp is geoptimaliseer om die werkverrigting van die Buffer.copy()- en Buffer.write()-metodes aansienlik te verhoog.
  • Die werkverrigting van die node:fs-module is verbeter, wat ook die aantal oproepe na C++-kode verminder tydens werking.
  • Die V8-enjin is opgedateer na weergawe 12.9, wat in Chromium 129 gebruik word.
  • Ondersteuning vir 32-bis Windows-stelsels is verwyder.
  • As gevolg van die bekendstelling van kenmerke gedefinieer in die C++8-standaard in Node.js en die V20-enjin, is die vereistes vir die GCC-samestellerweergawe verhoog. Die bou van Node.js vereis nou ten minste GCC 12.

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 die definisie van terugbelhanteerders. Ondersteunde metodes vir multipleksing van verbindings sluit in epoll, kqueue, /dev/poll, en select. Vir verbindingsmultipleksing word die libuv-biblioteek gebruik, wat 'n byvoeging is tot libev op Unix-stelsels en tot IOCP op Windows. Die libeio-biblioteek word gebruik om 'n draadpoel te skep, en c-ares is geïntegreer om DNS-navrae in 'n nie-blokkerende modus uit te voer. Alle stelseloproepe wat blokkering veroorsaak, word binne die draadpoel uitgevoer en stuur dan, soos seinhanteerders, die resultaat van hul werk terug deur 'n naamlose pyp.

Die uitvoering van JavaScript-kode word verseker deur die gebruik van die V8-enjin wat deur Google ontwikkel is (daarby ontwikkel Microsoft 'n weergawe 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 implementering van gebeure in Tcl, maar die gebeurtenislus in Node.js is weggesteek vir die ontwikkelaar en lyk soos gebeurtenisverwerking in 'n webtoepassing loop in blaaier.

Bron: opennet.ru

Voeg 'n opmerking