väljalase , platvormid JavaScripti põhjalike võrgu rakenduste käitamiseks. Samal ajal viidi stabiliseerimine varasemast Node.js 12.x harust lõpule, mis on viidud pikaajalise toe (LTS) väljaannete kategooriasse, mille jaoks uuendusi antakse välja 4 aasta jooksul. Eelmise LTS haru Node.js 10.0 toetamine kestab kuni aprillini 2021, ja üle-eelmise LTS haru 8.0 kuni jaanuarini 2020.
Peamised :
- V8 mootori versioon on uuendatud versioonini , kus on kasutusele võetud uued jõudluse optimeerimise meetodid, parendatud objektide destruktureerimist, vähendatud mälu tarbimist ja lühendatud WebAssembly täitmise ettevalmistamise aega;
- Täielik rahvusvahelistamise ja Unicode'i tugi on vaikimisi lubatud, tuginedes (International Components for Unicode) raamatukogudele, mis võimaldab arendajatel kirjutada koodi, erinevate keelte ja lokaliseerimisega töötamist. Moodul full-icu on nüüd vaikimisi installitud;
- API on stabiliseeritud , mitme lõimega sündmuste töötlemise tsüklite (event loop) loomiseks. Teostus põhineb moodulil worker_threads, mis võimaldab JavaScripti koodi käitada mitmes paralleelses lõimes. Workers Threads API stabiilne tugi on samuti tagatud tagasi LTS haru Node.js 12.x;
- Platvormide nõuded on tõusutavad. Nüüd on vajalik kokku panna vähemalt macOS 10.11 (Xcode 10 vajalik), AIX 7.2, Ubuntu 16.04, Debian 9, EL 7, Alpine 3.8, Windows 7/2008; Parandatud Python 3 tugi. Kui süsteemis on olemas nii Python 2 kui Python 3, kasutatakse endiselt Python 2, kuid nüüd on lisatud võimalus koostada ainult Python 3-ga;
- Vana HTTP-parseri rakendus on eemaldatud („—http-parser=legacy”). Eemaldatud või vananenud nimekirja viidud kutsed ja omadused FSWatcher.prototype.start(), ChildProcess._channel, meetod open() ReadStream ja WriteStream objektides, request.connection, response.connection, module.createRequireFromPath();
- Järgneb
- värskendus 13.0.1, kus on kiiresti parandatud mitu viga. Sealhulgas on lahendatud probleem npm 6.12.0 hoiatustega, mis on seotud toetust mitte saavutanud versiooniga. Tuletame meelde, et Node.js platvormi saab kasutada nii veebirakenduste serveriteenindamiseks kui ka tavapäraste kliendi- ja serverivõrgurahenduste loomiseks. Node.js rakenduste funktsionaalsuse laiendamiseks on koostatud suur
moodulite kogu , kus on saadaval moodulid HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 serverite ja klientide rakenduste, integratsioonimoodulite erinevate veebiraamistikega, WebSocketi ja Ajaxi töötlejate, andmebaaside (MySQL, PostgreSQL, SQLite, MongoDB) ühenduste, mallide, CSS-mootorite, krüptoalgoritmide ja autoriseerimissüsteemide (OAuth), XML-parsirite jaoks.
Suurte paralleelsete päringute töötlemise tagamiseks kasutab Node.js asünkroonset koodi käivitamise mudelit, mis põhineb sündmustel mittetõkestavas režiimis ja tagasiside töötlejate määramisel. Ühenduste mitmekordistamiseks toetatakse meetodeid nagu epoll, kqueue, /dev/poll ja select. Ühenduste mitmekordistamiseks kasutatakse raamatukogu , mis on süsteemide Unix ja Windows'i IOCP üleehitus. Thread-pool'i loomiseks kasutatakse raamatukogu , et teostada DNS-päringuid mittetõkestavas režiimis on integreeritud . Kõik süsteemikutsed, mis põhjustavad blokeerimist, tehakse nišipõhistes voogudes ja seejärel, nagu ka signaalide töötlejad, edastavad oma töö tulemuse tagasi läbi nimetamata kanali (pipe). JavaScripti koodi täitmine tagatakse Google’i välja töötatud mootori kaudu. (lisaks arendab Microsoft Node.js-i versiooni mootoriga Chakra-Core).
Node.js on oma olemuselt sarnane raamistikule , , ja sündmustele Tcl-s, kuid Node.jsi sündmuste töötlemise tsükkel (event loop) on arendajalt varjatud ja sarnaneb brauseris töötava veebi rakenduse sündmuste töötlemisega. Node.js-i rakenduste kirjutamisel tuleb arvestada sündmustele orienteeritud programmeerimise spetsiifikat: näiteks, asemel, et teostada «var result = db.query(«select..»);» tulemuse lõpetamise ootamiseks ja sellele järgnevaks töötlemiseks, kasutab Node.js asünkroonse täitmise põhimõtet, see tähendab, et kood muudetakse «db.query(«select..», function (result) {tulemuse töötlemine});», mille puhul kontroll läheb koheselt edasi järgmisele koodile ja päringu tulemust töödeldakse andmete saabumise ajal.
Allikas: opennet.ru
