Saadaval on serveripoolne JavaScripti platvorm Node.js 18.0

Välja anti Node.js 18.0, platvorm võrgurakenduste käitamiseks JavaScriptis. Node.js 18.0 on klassifitseeritud pikaajaliseks tugiharuks, kuid see olek määratakse alles oktoobris pärast stabiliseerumist. Node.js 18.x on toetatud kuni 2025. aasta aprillini. Node.js 16.x eelmise LTS-haru hooldus kestab 2024. aasta aprillini ja üle-eelmine LTS-i haru 14.x kuni 2023. aasta aprillini. 12.x LTS-i haru tegevus lõpetatakse 30. aprillil ja Node.js 17.x järkjärguline haru 1. juunil.

Peamised täiustused:

  • V8 mootor on värskendatud versioonile 10.1, mida kasutatakse Chromium 101-s. Võrreldes Node.js versiooniga 17.9.0, on nüüd olemas tugi sellistele funktsioonidele nagu findLast ja findLastIndex meetodid elementide otsimiseks elemendi lõpust. massiivi ja funktsiooni Intl.supportedValuesOf. Täiustatud Intl.Locale API. Kiirendatud on klassiväljade ja privaatmeetodite initsialiseerimist.
  • Eksperimentaalne fetch() API on vaikimisi lubatud, loodud ressursside laadimiseks võrgu kaudu. Teostus põhineb HTTP/1.1 undici kliendi koodil ja on võimalikult lähedane sarnasele brauserites pakutavale API-le. See hõlmab FormData, päiste, päringu ja vastuse liideste tuge HTTP päringu ja vastuse päiste manipuleerimiseks. const res = oodake tõmbamist('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = oodake res.json(); konsool.log(andmed); }
  • Lisatud on Web Streams API eksperimentaalne juurutus, mis pakub juurdepääsu võrgu kaudu vastuvõetud andmevoogudele. API võimaldab lisada andmetega töötamiseks oma töötlejaid, kui teave võrgu kaudu saabub, ootamata kogu faili allalaadimist. Node.js-is on nüüd saadaval järgmised objektid: ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream ja DecompressionStream.
  • Blob API on viidud stabiilseks, mis võimaldab teil kapseldada muutumatuid algandmeid ohutuks kasutamiseks erinevates töölõimedes.
  • BroadcastChannel API on muudetud stabiilseks, võimaldades korraldada asünkroonses režiimis sõnumite vahetamist vormingus “üks saatja – mitu saajat”.
  • Lisatud eksperimentaalne moodul node:test testide loomiseks ja käitamiseks JavaScriptis, mis tagastavad tulemused TAP-vormingus (Test Anything Protocol).
  • Pakutakse valmiskomplektide genereerimist Red Hat Enterprise Linux (RHEL) 8 ja muude Glibc 2.28+ baasil, sealhulgas Debian 10 ja Ubuntu 20.04, ning macOS 10.15+ jaoks. V8 mootori ehitamisega seotud probleemide tõttu on Windowsi 32-bitiste järkude loomine ajutiselt peatatud.
  • Pakkus eksperimentaalset võimalust luua Node.js käivitatav fail koos kasutaja valitud komponentidega, mis initsialiseeriti käivitamisel. Algkomponentide määratlemiseks on configure ehitusskriptile lisatud valik “--node-snapshot-main”, näiteks “./configure —node-snapshot-main=marked.js; nime sõlm"

Node.js platvormi saab kasutada nii veebirakenduste serverihoolduseks kui ka tavaliste kliendi- ja serverivõrguprogrammide loomiseks. Node.js-i rakenduste funktsionaalsuse laiendamiseks on koostatud suur moodulite kogu, millest leiate HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 serverite ja klientide juurutusega moodulid, integreerimise moodulid erinevate veebiraamistike, WebSocketi ja Ajaxi töötlejate, DBMS-i konnektorite (MySQL, PostgreSQL, SQLite, MongoDB), mallimootorite, CSS-mootorite, krüptoalgoritmide ja autoriseerimissüsteemide (OAuth) juurutuste, XML-i parseritega.

Suure hulga paralleelsete päringute töötlemise tagamiseks kasutab Node.js asünkroonse koodi täitmismudelit, mis põhineb sündmuste mitteblokeerimisel ja tagasihelistajate definitsioonil. Ühenduste multipleksimise toetatud meetodid on epoll, kqueue, /dev/poll ja select. Ühenduse multipleksimiseks kasutatakse libuv teeki, mis on lisandmoodul libevi jaoks Unixi süsteemides ja IOCP jaoks Windowsis. Libeio teeki kasutatakse lõimekogumi loomiseks ja c-ares on integreeritud DNS-päringute tegemiseks mitteblokeerivas režiimis. Kõik blokeerimist põhjustavad süsteemikutsed teostatakse lõimekogumi sees ja seejärel edastavad sarnaselt signaalikäsitlejatele oma töö tulemuse nimetu toru (toru) kaudu tagasi. JavaScripti koodi täitmine on tagatud Google’i poolt välja töötatud V8 mootori kasutamise kaudu (lisaks arendab Microsoft Chakra-Core mootoriga Node.js versiooni).

Oma põhiolemuselt sarnaneb Node.js Perl AnyEvent, Ruby Event Machine, Python Twisted raamistikega ja Tcl sündmuste juurutusega, kuid Node.js-i sündmusesilmus on arendaja eest peidetud ja sarnaneb sündmuste käsitlemisega töötavas veebirakenduses brauseris. Node.js-i rakenduste kirjutamisel peate arvestama 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..", funktsiooniks (result) {tulemuse töötlemine});", milles juhtimine läheb koheselt edasi edasisele koodile ja päringu tulemust töödeldakse andmete saabudes.

Allikas: opennet.ru

Lisa kommentaar