Palvelinpuolen JavaScript-alusta Node.js 18.0 saatavilla

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

Lisää kommentti