Palvelinpuolen JavaScript-alustan Node.js 16.0 julkaisu

Node.js 16.0 julkaistiin, alusta verkkosovellusten ajamiseen JavaScriptillä. Node.js 16.0 on luokiteltu pitkän aikavälin tukihaaralle, mutta tämä tila määritetään vasta lokakuussa vakautumisen jälkeen. Node.js 16.0:aa tuetaan huhtikuuhun 2023 asti. Node.js 14.0:n aiemman LTS-haaran ylläpito kestää huhtikuuhun 2023 asti ja edellisvuoden LTS-haaran 12.0:n ylläpitoon huhtikuuhun 2022 asti. Tuki 10.0 LTS -haaralle lopetetaan 10 päivän kuluttua.

Tärkeimmät parannukset:

  • V8-moottori on päivitetty versioon 9.0 (Node.js 15 käytti versiota 8.6), joka mahdollistaa ominaisuuksien, kuten säännöllisten lausekkeiden "indeksit" -ominaisuuden toteuttamisen (sisältää taulukon, jossa on osumaryhmien aloitus- ja loppupaikat) , Atomics-menetelmä Node.js 16:ssa .waitAsync (Atomics.waitin asynkroninen versio), tuki await-avainsanan käyttämiselle huipputason moduuleissa. Funktiokutsuja on nopeutettu tilanteissa, joissa välitettyjen argumenttien määrä ei vastaa funktiossa määriteltyjä parametreja.
  • Timers Promises API on vakiintunut, mikä tarjoaa vaihtoehtoisen joukon toimintoja työskentelyyn ajastimien kanssa, jotka palauttavat Promise-objekteja tulosteena, mikä eliminoi tarpeen käyttää util.promisify(). tuo { setTimeout } kohdasta 'ajastimet/lupaukset'; async function run() { odota setTimeout(5000); console.log('Hei, maailma!'); } juosta();
  • Web Crypto API -sovellusliittymän kokeellinen toteutus on lisätty, joka on suunniteltu suorittamaan perussalauksen operaatioita verkkosovellusten puolella, kuten salaustiivisteiden käsittelyä, digitaalisten allekirjoitusten luomista ja tarkistamista, datan koodausta ja dekoodausta erilaisilla salausmenetelmillä sekä kryptografisesti suojattujen tietojen luomista. satunnaisia ​​numeroita. API tarjoaa myös toimintoja avainten luomiseen ja hallintaan.
  • N-API (API lisäosien kehittämiseen) on päivitetty versioon 8.
  • Siirtyminen paketinhallinnan NPM 7.10 uuteen versioon on tehty.
  • Vakautti AbortController-luokan toteutuksen, joka perustuu AbortController Web API:hen ja mahdollistaa signaalien peruutuksen valituissa Promise-pohjaisissa API:issa.
  • Tuki Source Map -muodon kolmannelle versiolle, jota käytetään luotujen, käsiteltyjen tai pakattujen moduulien vertaamiseen alkuperäiseen lähdekoodiin, on vakiintunut.
  • Yhteensopivuuden varmistamiseksi vanhojen Web-sovellusliittymien kanssa menetelmät buffer.atob(data) ja buffer.btoa(data) on lisätty.
  • Uusien M1 ARM -sirulla varustettujen Apple-laitteiden kokoonpanojen muodostus on alkanut.
  • Linux-alustalla kääntäjän versiovaatimukset on nostettu GCC 8.3:een.

Muistetaan, että Node.js-alustaa voidaan käyttää sekä web-sovellusten palvelinpuolen tukemiseen 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), mallikoneilla, CSS-moottoreilla, 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.

Lisäksi voidaan todeta, että Deno-yritys, jonka Node.js:n luoja perusti kehittämään seuraavan sukupolven Deno-alustaa, sai 4.9 miljoonan dollarin investointeja. Tarkoitukseltaan Deno on samanlainen kuin Node.js, mutta se yrittää eliminoida Node.js-arkkitehtuurissa tehdyt käsitteelliset virheet ja tarjota käyttäjille turvallisemman ympäristön. Todetaan, että Denon liiketoimintaratkaisut rakennetaan täysin avoimille tuotteille, ja Open Core -malli erillisellä maksullisella toiminnallisuudella ei ole hyväksyttävää Deno-alustalle.

Lähde: opennet.ru

Lisää kommentti