vabastus , platvorm, mis vÔimaldab JavaScripti vÔrgurakenduste kÀitamiseks. Node.js 14.0 kuulub pikaajalise toe harude alla, kuid see staatus omistatakse alles oktoobris, pÀrast stabiliseerimist. Node.js 14.0 toe lÔpetamine on aprillis 2023. Eelmise LTS-haru Node.js 12.0 tugi kestab aprillini 2022 ning eelneva LTS-haru 10.0 tugi kestab aprillini 2021. Vahe-eraldi haru 13.x toetus lÔpeb selle aasta juunis.
Peamised :
- Stabiliseeritud on toimetajate genereerimise vĂ”imalus, kas reaalajas vĂ”i teatud sĂŒndmuste toimumisel , milles kajastuvad sĂŒndmused, mis aitavad isoleerida selliseid probleemide pĂ”hjuste nagu kokkukukkumised, jĂ”udluse langemine, mĂ€lu lekked, suur CPU-koormus, ettenĂ€gematud veateated jne.
- Lisatud eksperimentaalne tugi API-le AsyncLocalStorage klassi rakendamisega, mis vĂ”ib olla kasutusel asĂŒnkroonse oleku loomisel tagasiside pĂ”histe töötlejate ja promise'ide raames. AsyncLocalStorage vĂ”imaldab andmeid salvestada veebipĂ€ra töötlemise ajal, sarnanedes teistes keeltes paiklikele loenditele (Thread-Local Storage).
- Eksperimentaalne vÔimalus ei genereeri hoiatavaid teateid moodulite laadimisel import ja export avalduste kaudu. Samas on ESM moodulite rakendamine endiselt eksperimentaalne.
- V8 mootor on uuendatud versioonile (, , ), mis sisaldab uusi jĂ”udluse optimeerimisi ja selliseid uuendusi nagu uus loogiline ĂŒhendusoperaator "??" (tagastab parema operandi, kui vasak operand on NULL vĂ”i undefined, ja vastupidi), operaator "?." kogu omaduste vĂ”i kutsete ahelate kontrollimiseks (nagu "db?.user?.name?.length" ilma eelneva kontrollita), meetod Intl.DisplayName lokaliseeritud nimede saamiseks jne.
- API Streams revisjon, mille eesmÀrk on parandada voogude API-de kooskÔla ja kÔrvaldada Node.js-i pÔhiomaduste kÀitumise erinevused. NÀiteks kÀitumine http.OutgoingMessage on lÀhedane stream.Writable-le ning net.Socket stream.Duplexile. Vale valik autoDestroy on vaikimisi seatud "true", mis tÀhendab, et "_destroy" kutsutakse ellu pÀrast lÔpetamist.
- Lisatud eksperimentaalne tugi API-le (), mis pakkus otseĂŒhendust operatsioonisĂŒsteemiga (POSIX API failide, socketite jne kasutamiseks).
- NÔuded on tÔusnud kompilaatoritele ja platvormidele: macOS 10.13 (High Sierra), GCC 6, .
Tuletame meelde, et Node.js platvormi saab kasutada nii veebirakenduste serveripoolseks toetamiseks kui ka tavaliste kliendi- ja serveripoolsete vĂ”rgurakenduste loomiseks. Node.js rakenduste funktsionaalsuse laiendamiseks on ette valmistatud suur , millest vĂ”ib leida mooduleid HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 serverite ja klientide rakendamiseks, erinevate veebiraamistikudega integreerimise mooduleid, WebSocket ja Ajax töötlejaid, andmebaasihaldussĂŒsteemide (MySQL, PostgreSQL, SQLite, MongoDB) konnektoreid, templating töötlejaid, CSS-ĐŒootoreid, krĂŒptograafiliste algoritmide ja autoriseerimissĂŒsteemide (OAuth) rakendusi, XML-parsereid.
KĂ€ideldes suurt arvu paralleelseid pĂ€ringuid, kasutab Node.js asĂŒnkroonset koodikĂ€itlusmudelit, mis pĂ”hineb mitteblokeerivatel sĂŒndmuste töötlemisel ja callback-töötlejate mÀÀratlemisel. Ăhenduste multiplitseerimise meetoditena toetatakse selliseid meetodeid nagu epoll, kqueue, /dev/poll ja select. Ăhenduste multiplitseerimiseks kasutatakse raamistikku , mis on kiht Unix sĂŒsteemides ja IOCP Windowsis. Kui thread pool'i loomiseks on kasutatud teeki , mittesĂŒnnivĂ€lja DNS-pĂ€ringute tĂ€itmiseks on integreeritud . KĂ”ik blokeerivaid sĂŒsteemikĂ”nesid, mis vĂ”iksid blokeerida, teostatakse thread pool'is ja seejĂ€rel edastavad nad nagu signaalitöötlejad oma töö tulemuse tagasi anonĂŒĂŒmse toru (pipe) kaudu. JavaScripti koodi tĂ€itmine tagatakse Google'i arendatud mootori kaudu (tĂ€iendavalt arendab Microsoft Node.js-i versiooni koos Chakra-Core mootoriga).
Oma olemuselt on Node.js sarnane raamistikuga , , ja Tcl-i sĂŒndmusi, kuid Node.js-i sĂŒndmuste töötlemise tsĂŒkkel on arendajalt peidetud ja sarnaneb sĂŒndmuste töötlemisega veebi rakenduses, mis töötab brauseris. Node.js-i jaoks rakenduste kirjutamisel tuleb arvestada sĂŒndmuste jĂ€rgi programmeerimise eripĂ€ra, nĂ€iteks, selle asemel et teostada "var result = db.query('select..');" oodates lĂ”petamist ja seejĂ€rel tulemuste töötlemist, kasutatakse Node.js-is asĂŒnkroonse tĂ€itmise pĂ”himĂ”tet, st kood muudetakse "db.query('select..', function (result) {tulemuse töötlemine});", kusjuures juhtimine lĂ€heb kohe jĂ€rgnevasse koodi, samas kui pĂ€ringu tulemus töödeldakse andmete saabumise korral.
Allikas: opennet.ru
