Dostupna JavaScript platforma na strani poslužitelja Node.js 18.0

Objavljen je Node.js 18.0, platforma za pokretanje mrežnih aplikacija u JavaScriptu. Node.js 18.0 klasificiran je kao grana dugoročne podrške, ali će taj status biti dodijeljen tek u listopadu, nakon stabilizacije. Node.js 18.x bit će podržan do travnja 2025. Održavanje prethodne LTS grane Node.js 16.x trajat će do travnja 2024., a pretprošle LTS grane 14.x do travnja 2023. 12.x LTS ogranak bit će ukinut 30. travnja, a Node.js 17.x staging ogranak bit će ukinut 1. lipnja.

Glavna poboljšanja:

  • Motor V8 ažuriran je na verziju 10.1, koja se koristi u Chromiumu 101. U usporedbi s izdanjem Node.js 17.9.0, sada postoji podrška za značajke kao što su metode findLast i findLastIndex za pronalaženje elemenata u odnosu na kraj polje i funkcija Intl.supportedValuesOf. Poboljšani Intl.Locale API. Inicijalizacija polja klase i privatnih metoda je ubrzana.
  • Eksperimentalni fetch() API omogućen je prema zadanim postavkama, dizajniran za učitavanje resursa putem mreže. Implementacija se temelji na kodu iz HTTP/1.1 undici klijenta i što je moguće bliža sličnom API-ju koji se nudi u preglednicima. To uključuje podršku za sučelja FormData, Headers, Request and Response za manipuliranje zaglavljima HTTP zahtjeva i odgovora. const res = await fetch('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = await res.json(); konzola.log(podaci); }
  • Dodana je eksperimentalna implementacija API-ja Web Streams, koja omogućuje pristup tokovima podataka primljenih preko mreže. API omogućuje dodavanje vlastitih rukovatelja za rad s podacima kako informacije stižu preko mreže, bez čekanja da se cijela datoteka preuzme. Objekti koji su sada dostupni u Node.js uključuju ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream i DecompressionStream.
  • Blob API premješten je u stabilan, što vam omogućuje da enkapsulirate nepromjenjive neobrađene podatke za sigurnu upotrebu u različitim radnim nitima.
  • BroadcastChannel API postao je stabilan, što vam omogućuje organiziranje razmjene poruka u asinkronom načinu rada u formatu "jedan pošiljatelj - mnogo primatelja".
  • Dodan eksperimentalni modul node:test za izradu i izvođenje testova u JavaScriptu koji vraćaju rezultate u TAP (Test Anything Protocol) formatu.
  • Omogućeno je stvaranje gotovih sklopova za Red Hat Enterprise Linux (RHEL) 8 i druge distribucije temeljene na Glibc 2.28+, uključujući Debian 10 i Ubuntu 20.04, kao i za macOS 10.15+. Zbog problema s V8 nadogradnjom motora, izrada 32-bitnih nadogradnji za Windows je privremeno zaustavljena.
  • Omogućena je eksperimentalna opcija za izradu izvršne datoteke Node.js s komponentama koje je odabrao korisnik inicijaliziranim pri pokretanju. Za definiranje početnih komponenti, opcija “--node-snapshot-main” je dodana skripti za izgradnju konfiguracije, na primjer, “./configure —node-snapshot-main=marked.js; ime čvora"

Platforma Node.js može se koristiti i za poslužiteljsko održavanje web aplikacija i za kreiranje regularnih klijentskih i poslužiteljskih mrežnih programa. Za proširenje funkcionalnosti aplikacija za Node.js pripremljena je velika zbirka modula u kojoj možete pronaći module s implementacijom HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 poslužitelja i klijenata, module za integraciju s raznim web okvirima, WebSocket i Ajax rukovateljima, DBMS konektorima (MySQL, PostgreSQL, SQLite, MongoDB), mehanizmima za izradu predložaka, CSS motorima, implementacijama kripto algoritama i autorizacijskim sustavima (OAuth), XML parserima.

Kako bi se osigurala obrada velikog broja paralelnih zahtjeva, Node.js koristi model izvršavanja asinkronog koda koji se temelji na rukovanju događajima bez blokiranja i definiciji rukovatelja povratnim pozivom. Podržane metode za multipleksiranje veza su epoll, kqueue, /dev/poll i select. Za multipleksiranje veze koristi se biblioteka libuv, koja je dodatak za libev na Unix sustavima i IOCP na Windowsima. Biblioteka libeio koristi se za stvaranje skupa niti, a c-ares je integriran za izvođenje DNS upita u načinu rada bez blokiranja. Svi sistemski pozivi koji uzrokuju blokiranje izvršavaju se unutar skupa niti i zatim, poput rukovatelja signalima, prenose rezultat svog rada natrag kroz neimenovanu cijev (pipe). Izvršenje JavaScript koda omogućeno je korištenjem V8 motora koji je razvio Google (pored toga, Microsoft razvija verziju Node.js s Chakra-Core motorom).

U svojoj srži, Node.js je sličan Perl AnyEvent, Ruby Event Machine, Python Twisted okvirima i Tcl implementaciji događaja, ali petlja događaja u Node.js skrivena je od programera i nalikuje rukovanju događajima u pokrenutoj web aplikaciji u pregledniku. Kada pišete aplikacije za node.js, trebate uzeti u obzir specifičnosti programiranja vođenog događajima, na primjer, umjesto da radite "var result = db.query("select..");" uz čekanje završetka rada i naknadnu obradu rezultata, Node.js koristi princip asinkronog izvođenja, tj. kod se transformira u "db.query("select..", function (result) {result processing});", u kojem će kontrola trenutno prijeći na daljnji kod, a rezultat upita će se obrađivati ​​kako podaci stignu.

Izvor: opennet.ru

Dodajte komentar