väljalase , 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 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 :
- On stabiilseks muudetud võimalus genereerida reaalajas või teatud sündmuste toimumisel , 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 , 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 import ja export avalduste abil. Samas jääb ESM moodulite rakendamine endiselt eksperimentaalseks.
- V8 mootori versioon on uuendatud versioonini (, , ), 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 (), pakkudes programmeerimisliideseid otseseks suhtlemiseks operatsioonisüsteemiga (POSIX API failide, sokettide jne haldamiseks).
- Nõuded on tõstetud kompilaatoritele ja platvormidele: macOS 10.13 (High Sierra), GCC 6, .
moodulite kogu , 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 , mis on süsteemide Unix ja Windows'i IOCP üleehitus. Thread-pool'i loomiseks kasutatakse raamatukogu , et teostada DNS-päringuid mittetõkestavas režiimis on integreeritud . 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. (lisaks arendab Microsoft Node.js-i versiooni mootoriga Chakra-Core).
Node.js on oma olemuselt sarnane raamistikule , , ja 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
