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
