Serveripoolne JavaScript Node.js 14.0 väljalase

võttis aset vabastama Sõlm.js 14.0,platvormid võrgurakenduste käitamiseks JavaScriptis. Node.js 14.0 on pikaajaline tugiharu, kuid see olek määratakse alles oktoobris pärast stabiliseerimist. Toetatakse versiooni Node.js 14.0 läbi viia aprillini 2023. Node.js 12.0 eelmise LTS-i haru hooldus kestab 2022. aasta aprillini ja üle-eelmine LTS-i haru 10.0 2021. aasta aprillini. 13.x lavastusharu toetus lõpeb selle aasta juunis.

Kõik täiustused:

  • Võime genereerida käigu pealt või teatud sündmuste toimumisel on stabiliseerunud diagnostikaaruanded, mis kuvavad sündmusi, mis aitavad diagnoosida selliseid probleeme nagu kokkujooksmised, jõudluse halvenemine, mälulekked, suur protsessori koormus, ootamatu veaväljund jne.
  • Lisatud eksperimentaalne API tugi Asünkrooni kohalik salvestusruum klassi AsyncLocalStorage juurutamisega, mille abil saab tagasihelistamiskõnede ja lubaduste põhjal luua töötlejatega asünkroonse oleku. AsyncLocalStorage võimaldab teil veebipäringu töötlemise ajal andmeid salvestada, meenutades teiste keelte keermepõhist salvestusruumi.
  • Laadimisel eemaldati hoiatusteade eksperimentaalse funktsiooni kohta moodulid ECMAScript 6 ühendatud ja eksporditud impordi- ja ekspordiaruannete abil. Samal ajal jääb ESM-i moodulite juurutamine ise eksperimentaalseks.
  • V8 mootor värskendati versioonile 8.1 (1, 2, 3), mis sisaldab uusi jõudluse optimeerimisi ja funktsioone, näiteks uut loogilist konkatenatsioonioperaatorit "???" (tagastab parempoolse operandi, kui vasak operandi on NULL või määramata ja vastupidi), operaator "?." kogu atribuutide või kõnede ahela ühekordseks kontrollimiseks (näiteks “db?.user?.name?.length” ilma eelkontrollideta), Intl.DisplayName meetodit lokaliseeritud nimede saamiseks jne.
  • Viidi läbi Streams API läbivaatamine, mille eesmärk oli parandada Streams API-de järjepidevust ja kõrvaldada erinevused Node.js'i põhiosade käitumises. Näiteks http.OutgoingMessage käitumine on lähedane stream.Writable ja net.Socket sarnaneb stream.Duplex. AutoDestroy suvand on vaikimisi seatud väärtusele "true", mis tähendab "_destroy" kutsumist pärast lõpetamist.
  • Lisatud eksperimentaalne API tugi WASI (WebAssembly süsteemiliides), pakkudes tarkvaraliideseid otseseks suhtluseks operatsioonisüsteemiga (POSIX API failide, pistikupesadega jne töötamiseks).
  • Kõrgendatud nõuded minimaalsed versioonid kompilaatorid ja platvormid: macOS 10.13 (High Sierra), GCC 6, Windows uuem 7/2008R2.

Meenutagem, et Node.js platvormi saab kasutada nii veebirakenduste serveripoolseks toeks kui ka tavaliste kliendi- ja serverivõrguprogrammide loomiseks. Node.js-i rakenduste funktsionaalsuse laiendamiseks on suur hulk moodulite kogu, millest leiate moodulid serverite ja klientide juurutamisega HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, moodulid integreerimiseks erinevate veebiraamistikega, WebSocket ja Ajaxi töötlejad, konnektorid DBMS-iga (MySQL, PostgreSQL, SQLite , MongoDB), mallimootorid, CSS-mootorid, krüptoalgoritmide ja autoriseerimissüsteemide (OAuth) juurutused, XML-parserid.

Suure hulga paralleelsete päringute käsitlemiseks kasutab Node.js asünkroonse koodi täitmismudelit, mis põhineb sündmuste mitteblokeerimisel töötlemisel ja tagasihelistamise töötlejate määratlemisel. Ühenduste multipleksimise toetatud meetodid on epoll, kqueue, /dev/poll ja select. Teeki kasutatakse multipleksimiseks libuv, mis on pealisehitus üle libev Unixi süsteemides ja IOCP kaudu Windowsis. Teeki kasutatakse lõimekogumi loomiseks libeio, DNS-päringute sooritamiseks mitteblokeerivas režiimis on integreeritud c-ares. Kõik blokeerimist põhjustavad süsteemikutsed teostatakse lõimekogumis ja seejärel edastavad sarnaselt signaalikäsitlejatele oma töö tulemuse nimetu toru kaudu tagasi. JavaScripti koodi täitmine on tagatud Google’i poolt arendatud mootori kasutamisega V8 (Lisaks arendab Microsoft Chakra-Core mootoriga Node.js-i versiooni).

Oma põhiolemuselt sarnaneb Node.js raamistikega Perl AnyEvent, Ruby sündmuste masin, Python Twisted и rakendamine sündmused Tcl-is, kuid Node.js-i sündmusesilmus on arendaja eest peidetud ja sarnaneb sündmuste käsitlemisega brauseris töötavas veebirakenduses. Node.js rakenduste kirjutamisel tuleb arvestada näiteks sündmustepõhise programmeerimise spetsiifikaga, selle asemel, et teha “var result = db.query(“select..”);” töö valmimise ootamisega ja sellele järgneva tulemuste töötlemisega kasutab Node.js asünkroonse täitmise põhimõtet, st. kood teisendatakse "db.query("select..", funktsioon (tulemus) {tulemuse töötlemine});", milles juhtimine läheb kohe edasi edasisele koodile ja päringu tulemust töödeldakse andmete saabudes. .

Allikas: opennet.ru

Lisa kommentaar