Saadaval on serveripoolne JavaScripti platvorm Node.js 20.0

Toimunud on JavaScriptis võrgurakenduste käivitamise platvormi Node.js 20.0 väljalase. Node.js 20.0 on määratud pikale tugiharule, kuid see olek määratakse alles oktoobris pärast stabiliseerumist. Node.js 20.x toetatakse kuni 30. aprillini 2026. Eelmise Node.js 18.x LTS-i haru hooldus kestab 2025. aasta aprillini ja eelmise 16.x LTS-i haru 2023. aasta septembrini. 14.x LTS-i haru säilitatakse 30. aprillil ja Node.js 19.x ajutine haru 1. juunil.

Peamised täiustused:

  • V8 mootor on uuendatud versioonile 11.3, mida kasutatakse Chromium 113-s. Muudatustest võrreldes Node.js 19 haruga, mis kasutas Chromium 107 mootorit, funktsioone String.prototype.isWellFormed ja toWellFormed, Array.prototype ja TypedArray.prototype meetodid, mis töötavad koopiaga massiivi ja TypedArray objektide muutmisel, "v" lipp RegExpis, tugi ArrayBufferi suuruse muutmiseks ja SharedArrayBufferi suuruse suurendamiseks, sabakutse WebAssemblys.
  • Pakutakse välja eksperimentaalne loamudeli mehhanism, mis võimaldab piirata juurdepääsu teatud ressurssidele täitmise ajal. Loamudeli tugi on lubatud, määrates käitamise ajal lipu "--experimental-permission". Esialgsel juurutamisel pakuti välja valikud kirjutamis- (--allow-fs-write) ja lugemise (--allow-fs-read) juurdepääsu piiramiseks FS-i teatud osadele, alamprotsessidele (--allow-child-process) , lisandmoodulid (--no-addons ) ja lõimed (--allow-worker). Näiteks kataloogi /tmp kirjutamise ja faili /home/index.js lugemise lubamiseks saate määrata: node --experimental-permission --allow-fs-write=/tmp/ --allow-fs-read =/home/index.js register .js

    Juurdepääsu kontrollimiseks on soovitatav kasutada meetodit process.permission.has(), näiteks "process.permission.has('fs.write',"/tmp/test").

  • Suvandi "--experimental-loader" kaudu laaditud ECMAScripti välismoodulite (ESM-ide) käitlejad käivitatakse nüüd eraldi lõimes, mis on põhilõimest isoleeritud, mis välistab rakenduse koodi ja laaditud ESM-moodulite ristumiskoha. Sarnaselt brauseritele käivitub meetod import.meta.resolve() nüüd sünkroonselt, kui seda rakendusest välja kutsutakse. Ühes järgmistest Node.js-i harudest on ESM-i laadimise tugi plaanis viia stabiilsete funktsioonide kategooriasse.
  • Moodul node:test (test_runner), mis on loodud JavaScripti testide loomiseks ja käitamiseks, mis annavad tulemusi TAP-vormingus (Test Anything Protocol), on viidud stabiilseks.
  • Moodustati eraldi jõudlusmeeskond, kes on uue haru ettevalmistamisel töötanud erinevate käitusaja komponentide, sealhulgas URL-i parsimise, fetch() ja EventTarget kiirendamise nimel. Näiteks on EventTargeti lähtestamise üldkulusid poole võrra vähendatud, meetodi URL.canParse() jõudlust on oluliselt paranenud ja taimerite tõhusust. Lisaks sisaldub kompositsioonis suure jõudlusega URL-i parseri - Ada 2.0 - väljalase, mis on kirjutatud C ++ keeles.
  • Jätkus eksperimentaalse funktsiooni arendamine rakenduste edastamiseks ühe käivitatava faili kujul (SEA, Single Executable Applications). Täitmisfaili loomiseks tuleb nüüd asendada JSON-i konfiguratsioonifailist genereeritud blob (Selle asemel, et asendada JavaScripti faili).
  • Täiustatud Web Crypto API ühilduvus teiste projektide rakendustega.
  • Lisatud ametlik tugi Windowsile ARM64 süsteemides.
  • Jätkuv tugi WASI (WebAssembly System Interface) laiendustele eraldiseisvate WebAssembly rakenduste loomiseks. Eemaldatud vajadus määrata WASI toe lubamiseks spetsiaalne käsurea lipp.

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