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

Izdan je bil Node.js 21.0, platforma za izvajanje omrežnih aplikacij v JavaScriptu. Veja Node.js 21.0 bo podprta 6 mesecev. V naslednjih dneh bo končana stabilizacija veje Node.js 20, ki bo prejela status LTS in bo podprta do aprila 2026. Vzdrževanje prejšnje veje LTS Node.js 18.0 bo trajalo do septembra 2025, predlanske veje LTS 16.0 pa do aprila 2024.

Glavne izboljšave:

  • API Fetch je bil razglašen za stabilnega, zasnovan za nalaganje virov prek omrežja in poenostavitev pisanja univerzalne kode JavaScript, primerne za delo na strani strežnika in odjemalca. Implementacija temelji na kodi iz odjemalca HTTP/1.1 undici in je čim bližje podobnemu API-ju, ki je na voljo v brskalnikih. API vključuje metodo fetch() in predmete Headers. Zahteva in odgovor, ki predstavljata glave HTTP, zahtevo in odgovor. const res = await fetch('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = await res.json(); console.log(podatki); }
  • Podpora za WebStreams API, ki omogoča dostop do podatkovnih tokov, prejetih prek omrežja, je bila stabilizirana. API omogoča dodajanje lastnih upravljavcev, ki delajo s podatki, ko informacije prispejo prek omrežja, ne da bi čakali na prenos celotne datoteke. Objekti, ki so na voljo v Node.js, vključujejo ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream in DecompressionStream.
  • Dodana eksperimentalna izvedba odjemalca WebSocket, združljiva z brskalniki. Za omogočanje podpore za WebSocket je na voljo zastavica »--experimental-websocket«.
  • Dodan poskusni način za uporabo privzete implementacije modulov JavaScript ESM (moduli ECMAScript, ki se uporabljajo v modulih za brskalnike) namesto CommonJS (specifično za Node.js). Sprememba ne vpliva na module, katerih oblika je izrecno definirana prek polja "type" v package.json, določena prek zastavice "--input-type" ali je očitna zaradi pripone datoteke (.mjs za ESM, .cjs za CommonJS). Vendar pa bodo moduli, ki niso izrecno definirani kot CommonJS (imajo na primer pripono ».js«), obravnavani kot moduli ESM, ko je nov način omogočen. Za aktiviranje novih nastavitev modula je bila predlagana zastavica »--experimental-default-type«.
  • Motor V8 je bil posodobljen na različico 11.8, uporabljeno v Chromiumu 118, ki zdaj podpira metodo ArrayBuffer.prototype.transfer, možnost združevanja nizov (metoda groupBy) in navodila WebAssembly za obdelavo konstant (i32.add, i32.sub, i32.mul, i64 .add, i64.sub in i64.mul).
  • Podpora za obravnavo globalPreload je bila ukinjena v korist registracije in inicializacije klicev za konfiguriranje modulov.
  • Funkciji fs.writeFile je bila dodana možnost »izpiranja« za prisilno izpiranje podatkov na pogon po vsakem zapisovanju.
  • Izboljšana zmogljivost kode, povezane z razčlenjevanjem URL-jev, API-jem za pridobivanje, tokovi, node:fs in HTTP.
  • Dodan objekt globalnega navigatorja. Na primer, za pridobitev podatkov o številu jeder CPU lahko uporabite lastnost navigator.hardwareConcurrency.
  • V parametru »—test« je bila dodana podpora za glob maske za izbiro testov za izvajanje (na primer, lahko podate »—test **/*.test.js.«).
  • Upravljalnik paketov npm 10.2.0 in razčlenjevalnik llhttp 9.1.2 sta bila posodobljena.
  • Podpora za Visual Studio 2019 in različice macOS, starejše od 11.0, je bila ukinjena.

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