Node.js 14.0 serveri JavaScripti platvormi väljalase

On toimunud väljalase Node.js 14.0, võrgurakenduste käitamise platvorm JavaScripti keeles. Node.js 14.0 kuulub pikaajalise toe harudesse, kuid see staatus antakse alles oktoobris pärast stabiliseerimist. Node.js 14.0 toetamine kestab aprillini 2023. Eelmise LTS haru Node.js 12.0 toimetamine kestab aprillini 2022, ja eelmine LTS haru 10.0 aprillini 2021. Vaheharu 13.x toetus lõppeb sellel aastal juunis.

Peamised parandused:

  • On stabiilseks muudetud võimalus genereerida reaalajas või teatud sündmuste toimumisel diagnoosimisraporteid, milles kajastuvad sündmused, mis aitavad diagnoosida selliseid probleeme nagu kukkumised, jõudluse langus, mälulekete, suur CPU koormus, ettenägematud veateated jne.
  • Lisatud eksperimenteerimise tugi API-le Async Local Storage , rakendades AsyncLocalStorage klassi, mida saab kasutada asünkroonse seisundi loomisel callback- ja promise-põhiste töötlejatega. AsyncLocalStorage võimaldab andmeid hoida veebipäringute töötlemise ajal, meenutades teiste keelte lõimekohaseid salvestusi (Thread-Local Storage).
  • Eemaldatud eksperimentaalse funktsiooni hoiatuse kuvamine laadimisel moodulitele ECMAScript 6 import ja export avalduste abil. Samas jääb ESM moodulite rakendamine endiselt eksperimentaalseks.
  • V8 mootori versioon on uuendatud versioonini 8.1 (1, 2, 3), milles on tehtud uusi jõudlusoptimeerimiseid ja lisatud selliseid uuendusi nagu uus loogiline liitmisoperaator „??” (tagastab parema operandi, kui vasak operand on NULL või undefined, ja vastupidi), operaator „?.” kogu omaduste või kõnede ahela üheaegseks kontrollimiseks (näiteks „db?.user?.name?.length” ilma eelnevate kontrollideta), meetod Intl.DisplayName lokaliseeritud nimede saamiseks jne.
  • API Streams on üle vaadatud, et parandada Streams API-de järjepidevust ja kõrvaldada erinevusi Node.js algosade käitumises. Näiteks on http.OutgoingMessage'i käitumine lähenenud stream.Writable'ile ning net.Socket stream.Duplex'ile. Optsioon autoDestroy on vaikimisi seatud väärtusele „true”, mis tähendab „_destroy” kutsumist pärast lõpetamist.
  • Lisatud eksperimenteerimise tugi API-le WASI (WebAssembly süsteemliides), pakkudes programmeerimisliideseid otseseks suhtlemiseks operatsioonisüsteemiga (POSIX API failide, sokettide jne haldamiseks).
  • Nõuded on tõstetud minimaalsetele versioonidele kompilaatoritele ja platvormidele: macOS 10.13 (High Sierra), GCC 6, Windows uuemad kui 7/2008R2.

moodulite kogu moodulite kollektsioon, kus on saadaval moodulid HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 serverite ja klientide rakenduste, integratsioonimoodulite erinevate veebiraamistikega, WebSocketi ja Ajaxi töötlejate, andmebaaside (MySQL, PostgreSQL, SQLite, MongoDB) ühenduste, mallide, CSS-mootorite, krüptoalgoritmide ja autoriseerimissüsteemide (OAuth), XML-parsirite jaoks.

Suurte paralleelsete päringute töötlemise tagamiseks kasutab Node.js asünkroonset koodi käivitamise mudelit, mis põhineb sündmustel mittetõkestavas režiimis ja tagasiside töötlejate määramisel. Ühenduste mitmekordistamiseks toetatakse meetodeid nagu epoll, kqueue, /dev/poll ja select. Ühenduste mitmekordistamiseks kasutatakse raamatukogu libuv, mis on süsteemide Unix ja Windows'i IOCP üleehitus. libev Thread-pool'i loomiseks kasutatakse raamatukogu libeio, et teostada DNS-päringuid mittetõkestavas režiimis on integreeritud c-ares. Kõik süsteemikutsed, mis põhjustavad blokeerimist, tehakse nišipõhistes voogudes ja seejärel, nagu ka signaalide töötlejad, edastavad oma töö tulemuse tagasi läbi nimetamata kanali (pipe). JavaScripti koodi täitmine tagatakse Google’i välja töötatud mootori kaudu. V8 (lisaks arendab Microsoft Node.js-i versiooni mootoriga Chakra-Core).

Node.js on oma olemuselt sarnane raamistikule Perl AnyEvent, Ruby Event Machine, Python Twisted ja rakendamise sündmustele Tcl-s, kuid Node.jsi sündmuste töötlemise tsükkel (event loop) on arendajalt varjatud ja sarnaneb brauseris töötava veebi rakenduse sündmuste töötlemisega. Node.js-i rakenduste kirjutamisel tuleb arvestada sündmustele orienteeritud programmeerimise spetsiifikat: näiteks, asemel, et teostada «var result = db.query(«select..»);» tulemuse lõpetamise ootamiseks ja sellele järgnevaks töötlemiseks, kasutab Node.js asünkroonse täitmise põhimõtet, see tähendab, et kood muudetakse «db.query(«select..», function (result) {tulemuse töötlemine});», mille puhul kontroll läheb koheselt edasi järgmisele koodile ja päringu tulemust töödeldakse andmete saabumise ajal.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster