Node.js 14.0 serveri JavaScripti platvormi vÀljaandmine

Toimus vabastus Node.js 14.0, 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 kavandatud 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 parandused:

  • Stabiliseeritud on toimetajate genereerimise vĂ”imalus, kas reaalajas vĂ”i teatud sĂŒndmuste toimumisel diagnoosimisaruandeid, 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 Async Local Storage 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 mooduleid ECMAScript 6 import ja export avalduste kaudu. Samas on ESM moodulite rakendamine endiselt eksperimentaalne.
  • V8 mootor on uuendatud versioonile 8.1 (1, 2, 3), 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 WASI (WebAssembly System Interface), mis pakkus otseĂŒhendust operatsioonisĂŒsteemiga (POSIX API failide, socketite jne kasutamiseks).
  • NĂ”uded on tĂ”usnud miinimumversioonidele kompilaatoritele ja platvormidele: macOS 10.13 (High Sierra), GCC 6, Windows versiooni 7 / 2008R2 vĂ”i uuem.

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 moodulite kogum, 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 libuv, mis on kiht libev Unix sĂŒsteemides ja IOCP Windowsis. Kui thread pool'i loomiseks on kasutatud teeki libeio, mittesĂŒnnivĂ€lja DNS-pĂ€ringute tĂ€itmiseks on integreeritud c-ares. 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 V8 (tĂ€iendavalt arendab Microsoft Node.js-i versiooni koos Chakra-Core mootoriga).

Oma olemuselt on Node.js sarnane raamistikuga Perl AnyEvent, Ruby Event Machine, Python Twisted ja rakendus 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

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster