Node.js 23.0 -alusta on julkaistu TypeScript-kielen alustavan tuen kanssa

Node.js 23.0.0, alusta verkkosovellusten ajamiseen JavaScriptillä, on julkaistu. Node.js 23.0 on luokiteltu välihaaroksi, jota tuetaan 7 kuukauden ajan (kesäkuuhun 2025 asti). Lähipäivinä saadaan päätökseen Node.js 22 -haaran stabilointi, joka saa LTS-statuksen 29. lokakuuta ja sitä tuetaan huhtikuuhun 2027 asti. Node.js 20.x:n ja 18.x:n aiempien LTS-haarojen tuki jatkuu huhtikuuhun 2026 ja 2025 asti.

Tärkeimmät parannukset:

  • Lisätty kokeellinen tuki TypeScriptille, joka sallii eksplisiittiset tyyppimääritykset. Tuki on käytössä "--experimental-strip-types"- ja "--experimental-transform-types"-vaihtoehdoilla. Ensimmäisen vaihtoehdon tapauksessa TypeScriptillä työskentely rajoittuu kielikohtaisten tyyppimääritelmien tyhjentämiseen (tyyppitarkistusta ei suoriteta, koodi yksinkertaisesti muunnetaan tyypitttömäksi JavaScriptiksi). Toinen vaihtoehto muuntaa jotkin TypeScript-syntaksielementit, kuten enumit ja nimitilat, JavaScript-koodiksi.
  • Oletusarvoisesti käytössä on mahdollisuus käyttää "require()"-kutsua JavaScriptin ESM-moduulien (ECMAScript-moduulien) lataamiseen synkronisessa tilassa. ESM-moduuleja käytetään selaimissa ja ne korvaavat Node.js:lle ominaisia ​​CommonJS-moduuleja. Jos haluat ladata Node.js:n "require()"-komennolla, ESM-moduuli on suoritettava synkronisesti (ilman odotusta ylimmällä tasolla).
  • ESM-moduulien automaattinen tunnistus tiedostoista, joissa ei ole .js-laajennusta tai joissa on sen laajennus. Aiemmin tällaisia ​​tiedostoja käsiteltiin CommonJS-moduuleina, ellei niiden tyyppiä ole erikseen määritetty samassa hakemistossa olevassa package.json-tiedostossa ("tyyppi": "moduuli"). Uudessa versiossa tiedostot, joiden tyyppiä ei ole määritetty package.jsonissa, se yrittää ladata ensin CommonJS-moduulina ja jos tämä epäonnistuu, sitten ESM-moduulina.
  • Kokeellinen toteutus lisätty yhteensopiva selainten kanssa Web Storage -rajapinta on suunniteltu datan pysyvään (localStorage-luokka) tai väliaikaiseen (sessionStorage-luokka) tallennukseen avain/arvo-muodossa. Web Storage -tuen käyttöönotto edellyttää, että rajapinta suoritetaan "--experimental-webstorage"-lipulla ja tallennustiedoston polku määritetään "--localstorage-file"-lipulla.
  • Lisätty kokeellinen SQLite API työskentelyyn tietokantojen kanssa SQL-kyselykieltä ja SQLite-kirjastoon perustuvaa tallennustilaa varten. Sen lisäksi, että tietokanta tallennetaan levylle tiedostoon, se voidaan myös tallentaa muistiin määrittämällä ":memory:" tiedoston nimen sijaan. Edellä mainittu Web Storage API on myös toteutettu SQLiten päällä, minkä seurauksena SQLite on lisätty riippuvuutena Node.js:lle.
  • "Node —run" -komento on julistettu vakaaksi, ja se on suunniteltu suorittamaan package.json-tiedostossa määritettyjä komentosarjoja.
  • Toteutettu valinnainen tuki käännetyn koodin välimuistiin tallentamiseen levylle, mikä nopeuttaa merkittävästi moduulien käynnistämistä. Välimuisti on käytössä ympäristömuuttujan NODE_COMPILE_CACHE kautta. Tarkoituksensa suhteen ominaisuus muistuttaa v8-compile-cache-pakettia, mutta eroaa paremmasta suorituskyvystä ja ESM-moduulien tuesta.
  • Puskuri-objekti on optimoitu lisäämään merkittävästi Buffer.copy()- ja Buffer.write()-menetelmien suorituskykyä.
  • Node:fs-moduulin suorituskykyä on parannettu, mikä myös vähentää kutsujen määrää C++-koodiin käytön aikana.
  • V8-moottori on päivitetty versioon 12.9, jota käytetään Chromium 129:ssä.
  • 32-bittisten Windows-järjestelmien tuki on poistettu.
  • C++8-standardissa määriteltyjen ominaisuuksien käyttöönoton ansiosta Node.js:ssa ja V20-moottorissa GCC-kääntäjäversion vaatimuksia on korotettu. Node.js:n rakentaminen vaatii nyt vähintään GCC 12:n.

Node.js-alustaa voidaan käyttää sekä web-sovellusten palvelinpuolen tukeen että standardien asiakas- ja palvelinpuolen verkko-ohjelmien luomiseen. Node.js-sovellusten toiminnallisuuden laajentamiseksi on valmisteltu laaja kokoelma moduuleja, mukaan lukien toteutuksia sisältävät moduulit. palvelimia ja HTTP-, SMTP-, XMPP-, DNS-, FTP-, IMAP- ja POP3-asiakkaita, moduuleja integrointiin erilaisten web-kehysten kanssa, WebSocket- ja Ajax-käsittelijöitä, yhteyksiä tietokannan hallintajärjestelmiin (MySQL, PostgreSQL, SQLite, MongoDB), mallipohjaisia ​​moottoreita, CSS-moottoreita, kryptografisten algoritmien ja valtuutusjärjestelmien (OAuth) toteutuksia, XML-jäsentimiä.

Käsitelläkseen suuria määriä rinnakkaisia ​​pyyntöjä Node.js käyttää asynkronista koodin suoritusmallia, joka perustuu ei-estäviin tapahtumien käsittelyyn ja takaisinsoittokäsittelijöiden määrittämiseen. Tuettuja yhteyksien multipleksointimenetelmiä ovat epoll, kqueue, /dev/poll ja select. Multipleksointiin käytetään libuv-kirjastoa, joka on lisäosa libeviin Unix-järjestelmissä ja IOCP:hen Windowsissa. Libeio-kirjastoa käytetään säiepoolin luomiseen, ja c-ares on integroitu suorittamaan DNS-kyselyitä estävässä tilassa. Kaikki estoa aiheuttavat järjestelmäkutsut suoritetaan säikeen alla, ja sitten signaalinkäsittelijöiden tavoin ne välittävät työnsä tuloksen takaisin nimettömän putken kautta.

JavaScript-koodin suorittaminen varmistetaan Googlen kehittämän V8-moottorin avulla (lisäksi Microsoft kehittää Node.js-versiota Chakra-Core-moottorilla). Pohjimmiltaan Node.js on samanlainen kuin Perl AnyEvent-, Ruby Event Machine-, Python Twisted -kehykset ja tapahtumien toteutus Tcl:ssä, mutta Node.js:n tapahtumasilmukka on piilotettu kehittäjältä ja muistuttaa tapahtumien käsittelyä verkkosovelluksessa. käynnissä selaimessa.

Lähde: opennet.ru

Lisää kommentti