Node.js 18.0 julkaistiin, alusta verkkosovellusten ajamiseen JavaScriptillä. Node.js 18.0 on luokiteltu pitkän aikavälin tukihaaralle, mutta tämä tila määritetään vasta lokakuussa vakauttamisen jälkeen. Node.js 18.x on tuettu huhtikuuhun 2025 asti. Node.js 16.x:n aiemman LTS-haaran ylläpito kestää huhtikuuhun 2024 asti ja edellisvuoden LTS-haaran 14.x:n huhtikuuhun 2023 asti. 12.x LTS -haara lopetetaan 30. huhtikuuta ja Node.js 17.x -vaihehaara 1. kesäkuuta.
Tärkeimmät parannukset:
- V8-moottori on päivitetty versioon 10.1, jota käytetään Chromium 101:ssä. Verrattuna Node.js:n julkaisuun 17.9.0, siellä on nyt tuki ominaisuuksille, kuten findLast- ja findLastIndex-menetelmille elementtien etsimiseen suhteessa taulukko ja Intl.supportedValuesOf-funktio. Parannettu Intl.Locale API. Luokkakenttien ja yksityisten metodien alustusta on nopeutettu.
- Kokeellinen fetch() API on oletuksena käytössä, ja se on suunniteltu resurssien lataamiseen verkon kautta. Toteutus perustuu HTTP/1.1 undici -asiakkaan koodiin ja on mahdollisimman lähellä samankaltaista selaimissa tarjottavaa API:ta. Tämä sisältää tuen FormData-, Headers-, Request- ja Response-rajapinnoille HTTP-pyyntö- ja vastausotsikoiden käsittelyä varten. const res = odota hakua ('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = odota res.json(); console.log(data); }
- Web Streams API:n kokeellinen toteutus on lisätty, mikä tarjoaa pääsyn verkon kautta vastaanotettuihin tietovirtoihin. API mahdollistaa omien käsittelijöiden lisäämisen työskentelemään tietojen kanssa tiedon saapuessa verkon kautta odottamatta koko tiedoston lataamista. Node.js:ssä nyt saatavilla olevia objekteja ovat ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream ja DecompressionStream.
- Blob API on siirretty vakaaksi, jolloin voit kapseloida muuttumatonta raakadataa turvalliseen käyttöön eri työntekijäsäikeissä.
- BroadcastChannel API on tehty vakaaksi, joten voit järjestää viestien vaihdon asynkronisessa tilassa "yksi lähettäjä - monta vastaanottajaa" -muodossa.
- Lisätty kokeellinen moduuli node:test JavaScript-testien luomiseen ja suorittamiseen, jotka palauttavat tulokset TAP (Test Anything Protocol) -muodossa.
- Saatavilla on valmiiden kokoonpanojen sukupolvi Red Hat Enterprise Linux (RHEL) 8:lle ja muille Glibc 2.28+ -jakeluille, mukaan lukien Debian 10 ja Ubuntu 20.04, sekä macOS 10.15+:lle. V8-moottorin koontiversion ongelmien vuoksi 32-bittisten koontiversioiden luominen Windowsille on väliaikaisesti pysäytetty.
- Tarjosi kokeellisen vaihtoehdon Node.js-suoritettavan tiedoston rakentamiseen käyttäjän valitsemilla komponenteilla, jotka alustettiin käynnistyksen yhteydessä. Aloituskomponenttien määrittämiseksi "--node-snapshot-main" on lisätty configure build-skriptiin, esimerkiksi "./configure —node-snapshot-main=marked.js; nimi solmu"
Node.js alustaa voidaan käyttää sekä web-sovellusten palvelinylläpitoon että tavallisten asiakas- ja palvelinverkkoohjelmien luomiseen. Node.js-sovellusten toiminnallisuuden laajentamiseksi on valmisteltu suuri kokoelma moduuleja, joista löydät moduuleja HTTP-, SMTP-, XMPP-, DNS-, FTP-, IMAP-, POP3-palvelimien ja -asiakkaiden, integrointimoduuleja. erilaisilla verkkokehyksillä, WebSocket- ja Ajax-käsittelijöillä, DBMS-liittimillä (MySQL, PostgreSQL, SQLite, MongoDB), mallinnuskoneilla, CSS-koneilla, salausalgoritmien ja valtuutusjärjestelmien toteutuksilla (OAuth), XML-jäsentimillä.
Suuren rinnakkaisten pyyntöjen käsittelyn varmistamiseksi Node.js käyttää asynkronista koodin suoritusmallia, joka perustuu ei-estoiseen tapahtumien käsittelyyn ja takaisinsoittokäsittelijöiden määrittelyyn. Tuetut menetelmät yhteyksien multipleksointiin ovat epoll, kqueue, /dev/poll ja select. Yhteyden multipleksointiin käytetään libuv-kirjastoa, joka on lisäosa libeville Unix-järjestelmissä ja IOCP:lle Windowsissa. Libeio-kirjastoa käytetään säiepoolin luomiseen, ja c-ares on integroitu suorittamaan DNS-kyselyitä estotilassa. Kaikki tukoksia aiheuttavat järjestelmäkutsut suoritetaan säikeen alla ja sitten, kuten signaalinkäsittelijät, siirtävät työnsä tuloksen takaisin nimeämättömän putken (pipe) kautta. JavaScript-koodin suoritus tapahtuu 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 Tcl-tapahtumatoteutus, mutta Node.js:n tapahtumasilmukka on piilotettu kehittäjältä ja muistuttaa tapahtumien käsittelyä käynnissä olevassa verkkosovelluksessa. selaimessa. Kun kirjoitat sovelluksia node.js:lle, sinun on otettava huomioon esimerkiksi tapahtumapohjaisen ohjelmoinnin erityispiirteet sen sijaan, että tekisit "var result = db.query("select..");" Työn valmistumisen ja tulosten myöhemmän käsittelyn odottaessa Node.js käyttää asynkronisen suorituksen periaatetta, ts. koodi muunnetaan muotoon "db.query("select..", funktio (tulos) {tuloksen käsittely});", jossa ohjaus siirtyy välittömästi seuraavalle koodille ja kyselyn tulos käsitellään tietojen saapuessa.
Lähde: opennet.ru