Palvelinpuolen JavaScript-alusta Node.js 19.0 saatavilla

Node.js 19.0, alusta verkkosovellusten ajamiseen JavaScriptillä, julkaistiin. Node.js 19 on tavallinen tukihaara, jonka päivitykset ovat saatavilla kesäkuuhun 2023 saakka. Lähipäivinä saadaan päätökseen Node.js 18 -haaran stabilointi, joka saa LTS-tilan ja jota tuetaan huhtikuuhun 2025 asti. Node.js 16.0:n aiemman LTS-haaran ylläpito kestää syyskuuhun 2023 ja edellisvuoden LTS-haaran 14.0:n ylläpitoon huhtikuuhun 2023 asti.

Tärkeimmät parannukset:

  • V8-moottori on päivitetty versioon 10.7, jota käytetään Chromium 107:ssä. Moottorissa Node.js 18 -haaraan verrattuna tehtyjen muutosten joukossa on huomioitu Intl.NumberFormat API:n kolmannen version toteutus, joka lisää uusia toimintoja formatRange (), formatRangeToParts() ja selectRange(), joukkojen ryhmittely, uudet pyöristys- ja tarkkuuden asetukset, kyky tulkita merkkijonoja desimaalilukuina. Mukana olevat riippuvuudet llhttp 8.1.0 ja npm 8.19.2 on myös päivitetty.
  • Kokeellista "node -watch" -komentoa on ehdotettu tarkkailutilan toteutuksella, joka varmistaa, että prosessi käynnistetään uudelleen, kun tuotu tiedosto muuttuu (jos esimerkiksi "node -watch index.js" suoritetaan, prosessi on käynnistyy automaattisesti uudelleen, kun index.js muuttuu).
  • Kaikille lähteville HTTP/HTTPS-yhteyksille HTTP 1.1 Keep-Alive -mekanismin tuki on käytössä, mikä jättää yhteyden auki tietyksi ajaksi käsitelläkseen useita HTTP-pyyntöjä saman yhteyden sisällä. Keep-Aliven odotetaan parantavan suorituskykyä ja suorituskykyä. Oletuksena yhteyden avaamisen aikakatkaisu on 5 sekuntia. HTTP-asiakastoteutukseen on lisätty tuki Keep-Alive HTTP-otsikon jäsentämiselle palvelinvastauksissa, ja ei-aktiivisten asiakkaiden automaattinen yhteyden katkaisu Keep-Alivella on lisätty Node.js HTTP-palvelintoteutukseen.
  • WebCrypto API on siirretty vakaaseen luokkaan, lukuun ottamatta Ed25519-, Ed448-, X25519- ja X448-algoritmeja käyttäviä toimintoja. Päästäksesi WebCrypto-moduuliin voit nyt käyttää globalThis.cryptoa tai request('node:crypto').webcryptoa.
  • Tuki DTrace-, SystemTap- ja ETW (Event Tracing for Windows) -seurantatyökaluille on poistettu, ja niiden ylläpitoa pidettiin epäasianmukaisena, koska sen ajan tasalla pitäminen oli monimutkainen asianmukaisen tukisuunnitelman puuttuessa.

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