Izdanje JavaScript Node.js 14.0 na strani poslužitelja

odvijao puštanje Čvor.js 14.0, platforme za izvršavanje mrežnih aplikacija u JavaScriptu. Node.js 14.0 pripada granama duge podrške, ali će taj status biti dodijeljen tek u listopadu, nakon stabilizacije. Bit će podrške za Node.js 14.0 provedeno do travnja 2023. Održavanje prethodne grane Node.js 12.0 LTS trajat će do travnja 2022., a prethodne grane 10.0 LTS do travnja 2021. Podrška za 13.x staging granu prestaje u lipnju ove godine.

Glavni poboljšanja:

  • Sposobnost generiranja u hodu ili kada se dogode određeni događaji je stabilizirana dijagnostička izvješća, koji odražavaju događaje koji pomažu u dijagnosticiranju problema kao što su rušenja, padovi performansi, curenje memorije, veliko opterećenje CPU-a, neočekivani ispis pogreške itd.
  • Dodana eksperimentalna API podrška Asinkrona lokalna pohrana s implementacijom klase AsyncLocalStorage koja se može koristiti za stvaranje asinkronog stanja s rukovateljima temeljenim na povratnim pozivima i obećanjima. AsyncLocalStorage vam omogućuje pohranu podataka dok se web zahtjev obrađuje, slično kao Thread-Local Storage na drugim jezicima.
  • Uklonjeno upozorenje eksperimentalne značajke pri pokretanju moduli ECMAScript 6 povezani i izvezeni pomoću naredbi za uvoz i izvoz. Pritom je sama implementacija ESM modula još uvijek eksperimentalna.
  • V8 motor ažuriran na verziju 8.1 (1, 2, 3), koji uvodi nove optimizacije izvedbe i dodaje nove značajke kao što je novi logički operator spajanja "??" (vraća desni operand ako je lijevi operand NULL ili nedefiniran, i obrnuto), "?." za jednokratnu provjeru cijelog lanca svojstava ili poziva (na primjer, "db?.user?.name?.length" bez preliminarnih provjera), Intl.DisplayName metoda za dobivanje lokaliziranih imena itd.
  • Streams API je prerađen kako bi se poboljšala dosljednost Streams API-ja i riješile razlike u ponašanju ključnih dijelova Node.js. Na primjer, ponašanje http.OutgoingMessage slično je stream.Writable, a net.Socket slično je stream.Duplexu. Opcija autoDestroy je prema zadanim postavkama postavljena na "true", što znači da će se "_destroy" pozvati po završetku.
  • Dodana eksperimentalna API podrška WASI (Sučelje sustava WebAssembly) koji pruža programska sučelja za izravnu interakciju s operativnim sustavom (POSIX API za rad s datotekama, utičnicama itd.).
  • Povećani zahtjevi za minimalne verzije prevoditelji i platforme: macOS 10.13 (High Sierra), GCC 6, Windows noviji od 7/2008R2.

Podsjetimo da se Node.js platforma može koristiti i za poslužiteljsko održavanje web aplikacija i za kreiranje običnih klijentskih i poslužiteljskih mrežnih programa. Za proširenje funkcionalnosti aplikacija za Node.js, veliki zbirka modula, u kojem 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 rukovatelje, konektore na DBMS (MySQL, PostgreSQL, SQLite , MongoDB ), strojevi za predloške, CSS strojevi, implementacije kripto algoritama i sustava autorizacije (OAuth), XML parseri.

Kako bi se osigurala obrada velikog broja paralelnih zahtjeva, Node.js koristi model izvršavanja asinkronog koda koji se temelji na neblokirajućem rukovanju događajima i definiciji obrađivača povratnih poziva. Podržane metode za multipleksiranje veza su epoll, kqueue, /dev/poll i select. Knjižnica se koristi za multipleksiranje veza libuv, koji je nadgradnja nad libev na Unix sustavima i preko IOCP-a na Windowsima. Biblioteka se koristi za stvaranje skupa niti libeio, za izvođenje DNS upita u integriranom načinu rada bez blokiranja c-are. 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 upotrebom mehanizma koji je razvio Google V8 (Osim toga, Microsoft razvija varijantu Node.js s pogonom Chakra-Core).

U svojoj srži, Node.js je sličan okvirima. Perl AnyEvent, Ruby Event Machine, Python Twisted и implementacija događaja u Tcl-u, ali je petlja događaja u Node.js skrivena od programera i nalikuje rukovanju događajima u web aplikaciji koja se izvodi 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