Dostupna je JavaScript platforma Node.js 21.0 na strani servera

Objavljen je Node.js 21.0, platforma za pokretanje mrežnih aplikacija u JavaScript-u. Node.js 21.0 grana će biti podržana 6 mjeseci. U narednim danima će biti završena stabilizacija grane Node.js 20, koja će dobiti LTS status i biće podržana do aprila 2026. godine. Održavanje prethodne LTS grane Node.js 18.0 trajaće do septembra 2025., a pretprošle LTS grane 16.0 do aprila 2024. godine.

Glavna poboljšanja:

  • Fetch API je proglašen stabilnim, dizajniran za učitavanje resursa preko mreže i pojednostavljivanje pisanja univerzalnog JavaScript koda pogodnog za rad na strani servera i klijenta. Implementacija je zasnovana na kodu HTTP/1.1 undici klijenta i što je bliža sličnom API-ju koji se nalazi u pretraživačima. API uključuje metodu fetch() i objekte zaglavlja. Zahtjev i odgovor, koji predstavljaju HTTP zaglavlja, zahtjev i odgovor. const res = await fetch('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = await res.json(); console.log(podaci); }
  • Podrška za WebStreams API, koji omogućava pristup tokovima podataka primljenim preko mreže, je stabilizirana. API omogućava dodavanje vlastitih rukovatelja koji rade s podacima kako informacije stižu preko mreže, bez čekanja da se cijeli fajl preuzme. Objekti dostupni u Node.js uključuju ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream i DecompressionStream.
  • Dodata eksperimentalna implementacija WebSocket klijenta, kompatibilnog sa pretraživačima. Da biste omogućili podršku za WebSocket, obezbeđena je zastavica “--experimental-websocket”.
  • Dodan je eksperimentalni režim za korišćenje podrazumevane implementacije JavaScript modula ESM (ECMAScript moduli, koji se koriste u modulima za pretraživače) umesto CommonJS (specifično za Node.js). Promjena ne utiče na module čiji je format eksplicitno definiran putem polja "type" u package.json, specificiranog preko "--input-type" zastavice, ili je očigledna zbog ekstenzije datoteke (.mjs za ESM, .cjs za CommonJS). Međutim, moduli koji nisu eksplicitno definirani kao CommonJS (na primjer, imaju ekstenziju “.js”) će se tretirati kao ESM moduli kada je novi način omogućen. Za aktiviranje novih postavki modula, predložena je zastavica “--experimental-default-type”.
  • V8 motor je ažuriran na verziju 11.8, koristi se u Chromiumu 118, koji sada podržava metodu ArrayBuffer.prototype.transfer, mogućnost grupisanja nizova (groupBy metoda) i WebAssembly upute za obradu konstanti (i32.add, i32.sub, i32.mul, i64 .add, i64.sub i i64.mul).
  • Podrška za rukovalac globalPreload je ukinuta, u korist poziva registra i inicijalizacije za konfigurisanje modula.
  • Funkcija fs.writeFile dodata je opciju „ispiranje“ kako bi se natjerali podaci da se isprazne na drajv nakon svake operacije pisanja.
  • Poboljšane performanse koda koji se odnosi na raščlanjivanje URL-a, API za dohvaćanje, streamove, node:fs i HTTP.
  • Dodan globalni navigator objekat. Na primjer, da biste dobili podatke o broju CPU jezgara, možete koristiti svojstvo navigator.hardwareConcurrency.
  • U parametru “—test”, dodata je podrška za glob maske za odabir testova za pokretanje (na primjer, možete odrediti “—test **/*.test.js.”).
  • Uključeni paket menadžer npm 10.2.0 i llhttp 9.1.2 parser su ažurirani.
  • Podrška za Visual Studio 2019 i verzije macOS-a starije od 11.0 je ukinuta.

Node.js platforma se može koristiti i za serversko održavanje web aplikacija i za kreiranje redovnih klijentskih i serverskih mrežnih programa. Za proširenje funkcionalnosti aplikacija za Node.js, pripremljena je velika zbirka modula u kojoj se mogu pronaći moduli sa implementacijom HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 servera i klijenata, moduli za integraciju sa raznim web okvirima, WebSocket i Ajax rukovaocima, DBMS konektorima (MySQL, PostgreSQL, SQLite, MongoDB), šablonskim mašinama, CSS motorima, implementacijama kripto algoritama i sistema autorizacije (OAuth), XML parserima.

Da bi se osigurala obrada velikog broja paralelnih zahtjeva, Node.js koristi model izvršavanja asinhronog koda zasnovan na rukovanju događajima bez blokiranja i definiciji rukovatelja povratnim pozivima. 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 sistemima i IOCP na Windows. Biblioteka libeio se koristi za kreiranje spremišta niti, a c-ares je integriran za obavljanje DNS upita u neblokirajućem načinu. Svi sistemski pozivi koji uzrokuju blokiranje izvode se unutar spremišta niti, a zatim, kao rukovaoci signala, prenose rezultat svog rada nazad kroz neimenovanu cijev (cijev). Izvršenje JavaScript koda je obezbeđeno korišćenjem V8 motora koji je razvio Google (pored toga, Microsoft razvija verziju Node.js sa Chakra-Core motorom).

U svojoj srži, Node.js je sličan Perl AnyEvent, Ruby Event Machine, Python Twisted framework-u i Tcl implementaciji događaja, ali je petlja događaja u Node.js skrivena od programera i nalikuje rukovanju događajima u web aplikaciji koja radi u pretraživaču. Kada pišete aplikacije za node.js, morate 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 asinhronog izvršavanja, tj. kod se transformira u "db.query("select..", function (result) {result processing});", u kojem će kontrola trenutno proći daljem kodu, a rezultat upita će biti obrađen kako podaci stignu.

izvor: opennet.ru

Dodajte komentar