Saadaval on serveripoolne JavaScripti platvorm Node.js 19.0

Välja anti Node.js 19.0, platvorm võrgurakenduste käitamiseks JavaScriptis. Node.js 19 on tavaline tugiharu, mille värskendused on saadaval kuni 2023. aasta juunini. Lähipäevil jõuab lõpule Node.js 18 haru stabiliseerimine, mis saab LTS staatuse ja mida toetatakse 2025. aasta aprillini. Node.js 16.0 eelmise LTS-haru hooldus kestab 2023. aasta septembrini ja üle-eelmine LTS-i haru 14.0 2023. aasta aprillini.

Peamised täiustused:

  • V8 mootor on uuendatud versioonile 10.7, mida kasutatakse Chromium 107-s. Mootori muudatuste hulgas võrreldes Node.js 18 haruga märgitakse Intl.NumberFormat API kolmanda versiooni juurutamist, mis lisab uusi funktsioone formatRange (), formatRangeToParts() ja selectRange(), hulkade rühmitamine, uued ümardamise ja täpsuse seadmise võimalused, võimalus tõlgendada stringe kümnendarvudena. Samuti on värskendatud kaasatud sõltuvusi llhttp 8.1.0 ja npm 8.19.2.
  • Välja on pakutud eksperimentaalne käsk "node -watch", mis rakendab jälgimisrežiimi, mis tagab protsessi taaskäivitamise, kui imporditud fail muutub (näiteks kui käivitatakse "node -watch index.js", taaskäivitatakse protsess automaatselt kui index.js muutub).
  • Kõigi väljuvate HTTP/HTTPS-ühenduste puhul on lubatud HTTP 1.1 Keep-Alive mehhanismi tugi, mis jätab ühenduse teatud ajaks avatuks, et töödelda mitu HTTP-päringut samas ühenduses. Keep-Alive peaks eeldatavasti parandama läbilaskevõimet ja jõudlust. Vaikimisi on ühenduse avamise ajalõpuks seatud 5 sekundit. HTTP-kliendi juurutusse on lisatud Keep-Alive HTTP-päise sõelumise tugi serveri vastustes ja mitteaktiivsete klientide automaatne lahtiühendamine Keep-Alive'i abil on lisatud Node.js HTTP-serveri juurutusse.
  • WebCrypto API on üle viidud stabiilsesse kategooriasse, välja arvatud Ed25519, Ed448, X25519 ja X448 algoritme kasutavad funktsioonid. WebCrypto moodulile juurdepääsuks saate nüüd kasutada globalThis.crypto või nõuda('node:crypto').webcrypto.
  • Eemaldatud on DTrace, SystemTap ja ETW (Event Tracing for Windows) jälgimistööriistade tugi, mille hooldust peeti sobimatuks, kuna selle ajakohasena hoidmine on korraliku tugiplaani puudumisel keeruline.

Node.js platvormi saab kasutada nii veebirakenduste serverihoolduseks kui ka tavaliste kliendi- ja serverivõrguprogrammide loomiseks. Node.js-i rakenduste funktsionaalsuse laiendamiseks on koostatud suur moodulite kogu, millest leiate HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 serverite ja klientide juurutusega moodulid, integreerimise moodulid erinevate veebiraamistike, WebSocketi ja Ajaxi töötlejate, DBMS-i konnektorite (MySQL, PostgreSQL, SQLite, MongoDB), mallimootorite, CSS-mootorite, krüptoalgoritmide ja autoriseerimissüsteemide (OAuth) juurutuste, XML-i parseritega.

Suure hulga paralleelsete päringute töötlemise tagamiseks kasutab Node.js asünkroonse koodi täitmismudelit, mis põhineb sündmuste mitteblokeerimisel ja tagasihelistajate definitsioonil. Ühenduste multipleksimise toetatud meetodid on epoll, kqueue, /dev/poll ja select. Ühenduse multipleksimiseks kasutatakse libuv teeki, mis on lisandmoodul libevi jaoks Unixi süsteemides ja IOCP jaoks Windowsis. Libeio teeki kasutatakse lõimekogumi loomiseks ja c-ares on integreeritud DNS-päringute tegemiseks mitteblokeerivas režiimis. Kõik blokeerimist põhjustavad süsteemikutsed teostatakse lõimekogumi sees ja seejärel edastavad sarnaselt signaalikäsitlejatele oma töö tulemuse nimetu toru (toru) kaudu tagasi. JavaScripti koodi täitmine on tagatud Google’i poolt välja töötatud V8 mootori kasutamise kaudu (lisaks arendab Microsoft Chakra-Core mootoriga Node.js versiooni).

Oma põhiolemuselt sarnaneb Node.js Perl AnyEvent, Ruby Event Machine, Python Twisted raamistikega ja Tcl sündmuste juurutusega, kuid Node.js-i sündmusesilmus on arendaja eest peidetud ja sarnaneb sündmuste käsitlemisega töötavas veebirakenduses brauseris. Node.js-i rakenduste kirjutamisel peate arvestama näiteks sündmustepõhise programmeerimise spetsiifikaga, selle asemel, et teha "var result = db.query("select..");" töö valmimise ootamisega ja sellele järgneva tulemuste töötlemisega kasutab Node.js asünkroonse täitmise põhimõtet, st. kood teisendatakse "db.query("select..", funktsiooniks (result) {tulemuse töötlemine});", milles juhtimine läheb koheselt edasi edasisele koodile ja päringu tulemust töödeldakse andmete saabudes.

Allikas: opennet.ru

Lisa kommentaar