Saadaval on serveripõhine JavaScripti platvorm Node.js 18.0

Ilmus Node.js 18.0, platvorm veebirakenduste käitamiseks JavaScripti keeles. Node.js 18.0 on määratud pikaajalise toe harudesse, kuid see staatus antakse alles oktoobris pärast stabiliseerimist. Node.js 18.x tuge pakutakse aprillini 2025. Aastani kestab eelmise LTS-haru Node.js 16.x tugi aprillini 2024, ning eelneva LTS-haru 14.x tugi kuni aprillini 2023. LTS-haru 12.x tugi lõpetatakse 30. aprillil, vahearhitektuuri Node.js 17.x tugi kuni 1. juunini.

Peamised parandused:

  • V8 mootori versioon on uuendatud versioonile 10.1, mida kasutatakse Chromiumis 101. Võrreldes Node.js 17.9.0 väljaandega on lisandunud tugi uutele funktsioonidele nagu findLast ja findLastIndex, mis aitavad elemente massiivi lõpu suhtes otsida, ning funktsioonile Intl.supportedValuesOf. Parandatud on ka API Intl.Locale. Klasside väljade ja privaatsete meetodite initsialiseerimine on kiirem.
  • Vaikimisi on sisse lülitatud eksperimentaalne API fetch(), mis on mõeldud ressursside laadimiseks veebist. Teostus põhineb HTTP/1.1 kliendi undici koodil ja on võimalikult lähedane sarnasele API-le, mida pakuvad brauserid. Samuti on tagatud toetus liidestele FormData, Headers, Request ja Response HTTP-päringute ja vastuste pealkirjade manipuleerimiseks. const res = await fetch('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = await res.json(); console.log(data); }
  • Lisatud eksperimentaalne API Web Streams teostus, mis võimaldab juurdepääsu võrgust saadud andmevoogudele. API-põhine võimalus lisada oma töötlejad andmete töötlemiseks nende saabumise ajal, ootamata kogu faili laadimist. Node.js-is on nüüd saadaval sellised objektid nagu ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream ja DecompressionStream.
  • Stabiilsete teoste hulka on tõlgitud API Blob, mis võimaldab kapseldada muutumatuid tooreandmeid nende turvaliseks kasutamiseks erinevates tööprotsessides.
  • Stabiilsete lahenduste hulka on lisatud API BroadcastChannel, mis võimaldab korraldada asünkroonselt sõnumite vahetust, kasutades mudelit „üks saatja — palju saajaid”.
  • Lisatud eksperimentaalne moodul node:test JavaScripti testide loomiseks ja käitamiseks, mis tagastavad tulemuse TAP (Test Anything Protocol) formaadis.
  • Valmis kogumid Red Hat Enterprise Linux (RHEL) 8 ja teiste Glibc 2.28+ põhiste distributsioonide jaoks, sealhulgas Debian 10 ja Ubuntu 20.04, on nüüd kergesti saadaval, samuti macOS 10.15+ jaoks. V8 mootori koostamisprobleemide tõttu on 32-bitiste Windowsi versioonide koostamine ajutiselt peatatud.
  • Eksperimentaalselt on nüüd saadaval võimalus koostada Node.js käivitatavaid faile kasutaja valitud komponentidega, mis initsialiseeritakse käivitamisel. Algsete komponentide määramiseks on koostamiskeermesse lisatud valik „—node-snapshot-main”, näiteks „./configure —node-snapshot-main=marked.js; name node”

Node.js platvormi saab kasutada nii veebirakenduste serveripoolses toetuses kui ka tavapäraste kliendi- ja serveripoolsete võrguprogrammide loomiseks. Node.js rakenduste funktsionaalsuse laiendamiseks on koostatud suur moodulite kogu, kust leiate moodulid HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 klientide rakendamiseks. serverite Lisaks on saadaval moodulid erinevate veebiraamistikest integreerimiseks, WebSocketi ja Ajax töötlejate, andmebaasi ühenduse moodulite (MySQL, PostgreSQL, SQLite, MongoDB), templaatide, CSS-mootorite, krüptoalgoritmide ja autoriseerimissüsteemide (OAuth), XML-parside rakendusteks.

Node.js kasutab paljude paralleelsete päringute töötlemiseks asünkroonset koodikäitlusmudelit, mille aluseks on sündmuste mittesüvendav töötlemine ja tagasikutsumiste määramine. Ühenduste multiplexerimiseks toetatakse selliseid meetodeid nagu epoll, kqueue, /dev/poll ja select. Ühenduste multiplexerimiseks kasutatakse libuv raamatukogu, mis on Unix-süsteemides libev ja Windowsis IOCP. Töötajate basaari (thread pool) loomiseks kasutatakse libeio raamatukogu ning mittesüvendav DNS-päringute töötlemine on integreeritud c-ares'iga. Kõik süsteemi kutsed, mis võivad blokeeruda, täidetakse töötajate basaari sees ja seejärel, nagu ka signaalide töötlejad, edastavad oma töö tulemuse tagasi anonüümsesse torusse (pipe). JavaScripti koodi täitmine tagatakse Google'i loodud V8 mootori kaasamise kaudu (täpsemalt arendab Microsoft Node.js varianti Chakra-Core mootoriga).

Node.js on teatud mõttes sarnane Perl AnyEvent, Ruby Event Machine, Python Twisted ja Tcl-i sündmustepõhiste rakendustega, kuid Node.js-i sündmuste töötlemise tsükkel (event loop) on arendaja eest varjatud ning sarnaneb veebirakenduse sündmuste töötlemisega, mis töötab brauseris. Node.js-i rakenduste kirjutamisel tuleb arvestada sündmustepõhise programmeerimise eripäradega. Näiteks, selle asemel et teostada "var result = db.query('select..');" ja oodata tulemuste töötlemise lõpetamist, kasutatakse Node.js-is asünkroonse täitmise põhimõtet, st kood muutub "db.query('select..', function (result) {töötle tulemus});", kus juhtimine läheb kohe edasi järgmisele koodile ja päringu tulemus 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