Strežniška platforma JavaScript Node.js 18.0 je na voljo

Izdan je bil Node.js 18.0, platforma za izvajanje omrežnih aplikacij v JavaScriptu. Node.js 18.0 je razvrščen kot veja dolgoročne podpore, vendar bo ta status dodeljen šele oktobra, po stabilizaciji. Node.js 18.x bo podprt do aprila 2025. Vzdrževanje prejšnje veje LTS Node.js 16.x bo trajalo do aprila 2024, predlanske veje LTS 14.x pa do aprila 2023. Podružnica 12.x LTS bo ukinjena 30. aprila, uprizoritvena veja Node.js 17.x pa bo ukinjena 1. junija.

Glavne izboljšave:

  • Motor V8 je bil posodobljen na različico 10.1, ki se uporablja v Chromiumu 101. V primerjavi z izdajo Node.js 17.9.0 je zdaj na voljo podpora za funkcije, kot sta metodi findLast in findLastIndex za iskanje elementov glede na konec matriko in funkcijo Intl.supportedValuesOf. Izboljšan API Intl.Locale. Inicializacija polj razreda in zasebnih metod je bila pospešena.
  • Eksperimentalni API fetch() je privzeto omogočen in zasnovan za nalaganje virov prek omrežja. Implementacija temelji na kodi iz odjemalca HTTP/1.1 undici in je čim bližje podobnemu API-ju, ki je na voljo v brskalnikih. To vključuje podporo za vmesnike FormData, Headers, Request in Response za manipulacijo glav zahtev in odgovorov HTTP. const res = await fetch('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = await res.json(); console.log(podatki); }
  • Dodana je bila eksperimentalna izvedba API-ja Web Streams, ki omogoča dostop do podatkovnih tokov, prejetih prek omrežja. API omogoča dodajanje lastnih upravljavcev za delo s podatki, ko informacije prispejo prek omrežja, ne da bi čakali na prenos celotne datoteke. Objekti, ki so zdaj na voljo v Node.js, vključujejo ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream in DecompressionStream.
  • API Blob je bil premaknjen v stabilen, kar vam omogoča, da enkapsulirate nespremenljive neobdelane podatke za varno uporabo v različnih delovnih nitih.
  • BroadcastChannel API je bil stabilen, kar vam omogoča, da organizirate izmenjavo sporočil v asinhronem načinu v formatu "en pošiljatelj - veliko prejemnikov".
  • Dodan eksperimentalni modul node:test za ustvarjanje in izvajanje testov v JavaScriptu, ki vrnejo rezultate v formatu TAP (Test Anything Protocol).
  • Zagotovljena je generacija že pripravljenih sklopov za Red Hat Enterprise Linux (RHEL) 8 in druge distribucije, ki temeljijo na Glibc 2.28+, vključno z Debian 10 in Ubuntu 20.04 ter za macOS 10.15+. Zaradi težav z gradnjo motorja V8 je bilo ustvarjanje 32-bitnih različic za Windows začasno ustavljeno.
  • Zagotovljena eksperimentalna možnost za izdelavo izvedljive datoteke Node.js s komponentami, ki jih izbere uporabnik, inicializiranimi ob zagonu. Za definiranje začetnih komponent je bila skriptu za gradnjo konfiguracije dodana možnost »--node-snapshot-main«, na primer »./configure —node-snapshot-main=marked.js; ime vozlišča"

Platformo Node.js je mogoče uporabiti tako za strežniško vzdrževanje spletnih aplikacij kot za ustvarjanje rednih odjemalskih in strežniških omrežnih programov. Za razširitev funkcionalnosti aplikacij za Node.js je bila pripravljena velika zbirka modulov, v kateri najdete module z implementacijo HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 strežnikov in odjemalcev, module za integracijo z različnimi spletnimi okviri, upravljalniki WebSocket in Ajax, konektorji DBMS (MySQL, PostgreSQL, SQLite, MongoDB), mehanizmi za predloge, motorji CSS, implementacijami kripto algoritmov in avtorizacijskih sistemov (OAuth), razčlenjevalniki XML.

Da bi zagotovil obdelavo velikega števila vzporednih zahtev, Node.js uporablja model izvajanja asinhrone kode, ki temelji na neblokirni obravnavi dogodkov in definiciji obdelovalcev povratnih klicev. Podprte metode za multipleksiranje povezav so epoll, kqueue, /dev/poll in select. Za multipleksiranje povezav se uporablja knjižnica libuv, ki je dodatek za libev v sistemih Unix in IOCP v sistemu Windows. Knjižnica libeio se uporablja za ustvarjanje skupine niti, c-ares pa je integriran za izvajanje poizvedb DNS v načinu brez blokiranja. Vsi sistemski klici, ki povzročijo blokado, se izvedejo znotraj področja niti in nato, kot upravljalci signalov, prenesejo rezultat svojega dela nazaj skozi neimenovano cev (pipe). Izvajanje kode JavaScript je zagotovljeno z uporabo motorja V8, ki ga je razvil Google (poleg tega Microsoft razvija različico Node.js z motorjem Chakra-Core).

V svojem jedru je Node.js podoben ogrodjem Perl AnyEvent, Ruby Event Machine, Python Twisted in implementaciji dogodkov Tcl, vendar je zanka dogodkov v Node.js skrita pred razvijalcem in je podobna obravnavanju dogodkov v delujoči spletni aplikaciji v brskalniku. Ko pišete aplikacije za node.js, morate na primer upoštevati posebnosti programiranja, ki temelji na dogodkih, namesto da naredite "var result = db.query("select..");" s čakanjem na zaključek dela in kasnejšo obdelavo rezultatov Node.js uporablja princip asinhronega izvajanja, tj. koda se preoblikuje v "db.query("select..", function (result) {result processing});", v katerem bo nadzor takoj prešel na nadaljnjo kodo, rezultat poizvedbe pa bo obdelan, ko podatki prispejo.

Vir: opennet.ru

Dodaj komentar