vabastus , vÔrgurakenduste kÀitamiseks mÔeldud JavaScripti platvorm. Samal ajal stabiliseeriti eelmine Node.js 12.x versioon, mis on viidud pikaajalise toega vÀljaannete kategooriasse, mille uuendusi antakse vÀlja 4 aastat. Eelmise LTS versiooni Node.js 10.0 tugi kestab aprillini 2021 ja eelneva LTS versiooni 8.0 tugi kestab jaanuarini 2020.
Peamised :
- V8 mootor on uuendatud versioonile , kus on kasutusele vĂ”etud uued jĂ”udluse optimeerimise meetodid, paranenud objektide destructuring, vĂ€henenud mĂ€lu tarbimine ja lĂŒhendatud WebAssembly tĂ€itmise ettevalmistamise aega;
- Vaikimisi on tĂ€ielik rahvusvahelise ja Unicode'i toetus koos raamatukogudega (International Components for Unicode), mis vĂ”imaldab arendajatel kirjutada koodi, eri keelte ja kohalike seadete kasutamist. Moodul full-icu on nĂŒĂŒd vaikimisi installitud;
- Stabiliseeritud API , luua mitme lĂ”imega sĂŒndmuste töötlemise tsĂŒkleid (event loop). Teostus pĂ”hineb moodulil worker_threads, mis vĂ”imaldab kĂ€ivitada JavaScripti koodi mitmes paralleelses lĂ”imes. Töötajate lĂ”imude API stabiilne tugi on samuti tagasi portfelli LTS versioonis Node.js 12.x;
- Platvormide nĂ”uded on tĂ”usnud. NĂŒĂŒd peab kogumine olema vĂ€hemalt macOS 10.11 (vajalik Xcode 10), AIX 7.2, Ubuntu 16.04, Debian 9, EL 7, Alpine 3.8, Windows 7/2008;
- Parandatud Python 3 tuge. Kui sĂŒsteemis on olemas Python 2 ja Python 3, kasutatakse endiselt Python 2, kuid on lisatud vĂ”imalus koguda ainult Python 3 olemasolul;
- Eemaldatud vana HTTP-parsija teostus (ââhttp-parser=legacyâ). Eemaldatud vĂ”i vananenud, FSWatcher.prototype.start() kutsed ja omadused, ChildProcess._channel, meetod open() ReadStream ja WriteStream objektides, request.connection, response.connection, module.createRequireFromPath();
- JÀrgmisel uuendus 13.0.1, milles kohe pÀrast vabastamist parandati mitu tÔrget. Sealhulgas on lahendatud probleem, mis tekitas npm 6.12.0 versioonis teate kasutamisest toe sÔltumatust versioonist.
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
