Ilmus Node.js 18.0, platvorm vÔrgurakenduste tÀitmiseks JavaScriptis. Node.js 18.0 kuulub pikal toetuse perioodil olevate versioonide hulka, kuid see staatus antakse pÀrast stabiilsuse tagamise lÀbiviimist ainult oktoobris. Node.js 18.x toetamist jÀtkatakse aprillini 2025. Endise LTS-haru Node.js 16.x tugi kestab aprillini 2024, ja eelnenud LTS-haru 14.x kuni aprillini 2023. LTS-haru 12.x toetamine lÔpetatakse 30. aprillil ja vahepealne haru Node.js 17.x 1. juunil.
Peamised tÀiustused:
- V8 mootor on uuendatud versioonile 10.1, mida kasutatakse Chromium 101-s. VÔrreldes Node.js 17.9.0 vÀljaandega on lisatud sellised funktsioonid nagu findLast ja findLastIndex, mis vÔimaldavad otsida elemente massiivi lÔpust ning Intl.supportedValuesOf funktsioon. API Intl.Locale on paranenud. Klasside vÀljade ja privaatsete meetodite algatamine on kiirem.
- Vaikimisi on sisse lĂŒlitatud eksperimentaalne API fetch(), mis on mĂ”eldud ressursside laadimiseks ĂŒle vĂ”rgu. Rakendus pĂ”hineb HTTP/1.1 kliendi undici koodil ja on vĂ”imalikult lĂ€hedane sarnasele API-le, mis on saadaval brauserites. Sealhulgas on tagatud toe olemasolu liidestele FormData, Headers, Request ja Response, et manipuleerida HTTP-pĂ€ringute ja -vastuste pĂ€istega. const res = await fetch(âhttps://nodejs.org/api/documentation.jsonâ); if (res.ok) { const data = await res.json(); console.log(data); }
- Lisatud on eksperimentaalne Web Streams API teostus, mis annab juurdepÀÀsu vĂ”rgu kaudu saadud andmevoogudele. API vĂ”imaldab lisada oma töötlejad andmete töötlemiseks andmete voolamisel, ootamata kogu faili laadimist. Node.js-s on nĂŒĂŒd saadaval sellised objektid nagu ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream ja DecompressionStream.
- Stabiilseks on muudetud API Blob, mis vÔimaldab kapseldada muutumatuid toorandmeid nende turvaliseks kasutamiseks erinevates töövoogudes.
- Stabiilseks on muudetud API BroadcastChannel, mis vĂ”imaldab korraldada asĂŒnkroonset sĂ”numivahetust âĂŒks saatja - palju saajatâ formaadis.
- Lisatud on eksperimentaalne moodul node:test JavaScriptis testide loomiseks ja kÀivitamiseks, mis tagastavad tulemuse TAP (Test Anything Protocol) formaadis.
- Valmistatud on valmis pakette Red Hat Enterprise Linux (RHEL) 8 ja teiste Glibc 2.28+ pÔhiste distributsioonide jaoks, sealhulgas Debian 10 ja Ubuntu 20.04, samuti macOS 10.15+ jaoks. V8 mootori koostamisprobleemide tÔttu on 32-bitiste Windowsi paketide loomine ajutiselt peatatud.
- Eksperimentaalselt on lisatud vÔimalus koostada Node.js tÀitevfaili valitud kasutaja komponente, mis initsialiseeritakse kÀivitamisel. Algkomponentide mÀÀramiseks on koostamisriistade skripti configure lisatud valik "--node-snapshot-main", nÀiteks "./configure --node-snapshot-main=marked.js; name node".
Node.js platvormi saab kasutada nii veebirakenduste serveripoolseks toe tagamiseks kui ka tavaliste klient-serveri vĂ”rgurakenduste loomiseks. Node.js jaoks on vĂ€lja töötatud suur moodulite kogumik, kust leiate mooduleid, mis hĂ”lmavad serverid HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 kliente, mooduleid erinevate veebiraamistike integreerimiseks, WebSocket ja Ajax töötlejat, andmebaasi ĂŒhendusi (MySQL, PostgreSQL, SQLite, MongoDB), malligeneraatorid, CSS-mootorid, krĂŒptoalgoritmide rakendused ja autentimissĂŒsteemid (OAuth), XML-parsereid.
Suurte paralleelsete pĂ€ringute töötlemise tagamiseks kasutab Node.js asĂŒnkroonset koodikĂ€ivitamise mudelit, mis pĂ”hineb mitteblokeerival sĂŒndmustöötlusel ja tagasiside töötlejate mÀÀramisel. Ăhenduste multiplexerimise meetoditeks on sellised meetodid nagu epoll, kqueue, /dev/poll ja select. Ăhenduste multiplexerimiseks kasutatakse libuv teeki, mis on libevi peal Unix-sĂŒsteemides ja IOCP peal Windowsis. Tööde vĂ”rgu loomise jaoks kasutatakse libeio teeki, niisuguste mitteblokeerivate DNS-pĂ€ringute töötlemiseks on integreeritud c-ares. KĂ”ik sĂŒsteemikutsed, mis pĂ”hjustavad blokeerimist, toimuvad teede grupis ja edastavad seejĂ€rel oma töö tulemuse tagasi anonĂŒĂŒmse kanali kaudu (pipe). JavaScripti koodi tĂ€itmine toimub Google'i vĂ€lja töötatud V8 mootori kaudu (Microsoft arendab lisaks versiooni Node.js Chakra-Core mootori kasutades).
Oma olemuselt on Node.js sarnane Perl AnyEvent, Ruby Event Machine, Python Twisted raamistikele ja sĂŒndmuste rakendusele Tcl-is, kuid Node.js sĂŒndmuste töötlemise ring on arendajate eest peidetud ja sarnaneb veebirakenduse sĂŒndmuste töötlemisega, mis töötab brauseris. Node.js rakenduste kirjutamisel tuleb arvestada sĂŒndmustepĂ”hise programmeerimise eripĂ€ra, nĂ€iteks, selle asemel, et tĂ€ita "var result = db.query('select..');" oodates töö valmimist ja seejĂ€rel tulemuste töötlemist, kasutatakse Node.js-is asĂŒnkroonilise tĂ€itmise printsiipi, st kood muudetakse "db.query('select..', function (result) {tulemuse töötlemine});", mille puhul juhtimine lĂ€heb koheselt jĂ€rgmisele koodile ja pĂ€ringu tulemust töödeldakse andmete saamisel.
Allikas: opennet.ru
