Dostupna je poslužiteljska JavaScript platforma Node.js 21.0

Objavljen je Node.js 21.0, platforma za izvršavanje mrežnih aplikacija napisnih u JavaScriptu. Podrška za grananje Node.js 21.0 trajat će 6 mjeseci. U narednim danima završit će stabilizacija grananja Node.js 20, koje će dobiti status LTS i podržavat će se do travnja 2026. godine. Održavanje prethodnog LTS grananja Node.js 18.0 trajat će do rujna 2025. godine, a pretprošlog LTS grananja 16.0 do travnja 2024. godine.

Glavna poboljšanja:

  • Najavljeno je stabilno API Fetch, namijenjeno za preuzimanje resursa preko mreže i pojednostavljuje pisanje univerzalnog JavaScript koda, pogodno za rad na strani poslužitelja i klijenta. Implementacija se temelji na kodu iz HTTP/1.1 klijenta undici i maksimalno je približena sličnom API-u, koji se pruža u preglednicima. API uključuje metodu fetch() i objekte Headers, Request i Response, 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(data); }
  • Stabilizirana je podrška za API WebStreams, koji pruža pristup podacima u potocima preuzetim preko mreže. API omogućuje dodavanje vlastitih obrada, koje rade s podacima dok informacije pristižu preko mreže, ne čekajući da se cijela datoteka učita. U Node.js su dostupni objekti kao ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream i DecompressionStream.
  • Dodana je eksperimentalna implementacija klijenta WebSocket, kompatibilna s preglednicima. Da biste omogućili podršku za WebSocket, predviđen je flag «—experimental-websocket».
  • Dodana je eksperimentalna opcija za korištenje po defaultu za implementaciju JavaScript modula ESM (ECMAScript Modules, koristi se u modulima za preglednike) umjesto CommonJS (specifičnih za Node.js). Promjena ne utječe na module čiji je format jasno definiran kroz polje „type” u package.json, postavljen kroz flag „—input-type” ili je očit zbog ekstenzije datoteke (.mjs za ESM, .cjs za CommonJS). Pri tome, moduli koji nisu jasno definirani kao CommonJS (npr. imaju ekstenziju „.js”), uz uključivanje novog režima bit će prepoznati kao ESM moduli. Za aktivaciju novih postavki modula predložen je flag „—experimental-default-type”.
  • V8 engine ažuriran je na verziju 11.8, korištenu u Chromium 118, u kojem je uvedena podrška za metodu ArrayBuffer.prototype.transfer, mogućnost grupiranja nizova (metoda groupBy) i WebAssembly upute za obradu konstanti (i32.add, i32.sub, i32.mul, i64.add, i64.sub i i64.mul).
  • Podrška za globalPreload procesor je prekinuta, umjesto toga za konfiguraciju modula treba koristiti pozive register i initialize.
  • Funkciji fs.writeFile dodana je opcija «flush» za prisilno ispuštanje podataka na uređaj nakon svake zapisne operacije.
  • Povećana je učinkovitost koda povezanog s analizom URL-a, API fetch, streamovima, node:fs i HTTP-om.
  • Dodani su globalni objekti navigator. Na primjer, za dobivanje podataka o broju CPU jezgri možete koristiti svojstvo navigator.hardwareConcurrency.
  • U parametar «—test» dodana je podrška za glob-maske za odabir testova koji će se pokrenuti (na primjer, možete navesti «—test **/*.test.js.»).
  • Ažurirani su paketni menadžer npm 10.2.0 i parser llhttp 9.1.2 koji su uključeni u paket.
  • Podrška za Visual Studio 2019 i verzije macOS starije od 11.0 je prekinuta.

Platforma Node.js može se koristiti kako za poslužiteljsko održavanje web aplikacija, tako i za izradu uobičajenih klijentskih i poslužiteljskih mrežnih programa. Za proširenje funkcionalnosti aplikacija za Node.js pripremljena je velika kolekcija modula, u kojoj se mogu pronaći moduli s implementacijama poslužitelja i klijenata HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, moduli za integraciju s raznim web okvirima, obrada WebSocket i Ajax, konektori za baze podataka (MySQL, PostgreSQL, SQLite, MongoDB), predlošci, CSS motori, implementacije kriptoalgoritama i sustava autentifikacije (OAuth), XML parseri.

Za osiguranje obrade velikog broja paralelnih zahtjeva, Node.js koristi asinkroni model pokretanja koda, koji se temelji na obradi događaja u neblokirajućem modu i definiranju callback handlera. Kao metode multiplexiranja veza podržavaju se različite metode poput epoll, kqueue, /dev/poll i select. Za multiplexiranje veza koristi se knjižnica libuv, koja je nadogradnja na libev u Unix sustavima i na IOCP u Windowsu. Za izradu skupa niti (thread pool) koristi se knjižnica libeio, a za izvršavanje DNS upita u neblokirajućem modu integriran je c-ares. Svi sustavni pozivi koji uzrokuju blokiranje izvode se unutar skupa niti i zatim, kao i handleri signala, vraćaju rezultat svog rada putem anonimnog kanala (pipe). Izvršavanje JavaScript koda osigurava se korištenjem motora V8 razvijenog od strane kompanije Google (dodatno, Microsoft razvija varijantu Node.js s motorom Chakra-Core).

Node.js je po svojoj suštini sličan Perl AnyEvent, Ruby Event Machine, Python Twisted i implementaciji događaja u Tkl-u, ali je ciklus obrade događaja (event loop) u Node.js skriven od programera i podseća na obradu događaja u web-aplikaciji koja radi u pretraživaču. Kada pišete aplikacije za Node.js, morate uzeti u obzir specifičnosti programiranja usmjerenog na događaje; na primer, umesto izvršavanja „var result = db.query(„select..“);“ uz čekanje na završetak rada i kasniju obradu rezultata, Node.js koristi princip asinhronog izvršavanja, tj. kod se transformiše u „db.query(„select..“, function (result) {obrada rezultata});“, pri čemu će kontrola odmah preći na dalji kod, a rezultat upita će se obraditi kako podaci pristižu.

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster