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
