Saadaval on serveripõhine JavaScript-platvorm Node.js 20.0

Välja on antud Node.js 20.0, platvorm, mis on mõeldud JavaScripti põhiste veebirakenduste käitamiseks. Node.js 20.0 kuulub pikaajalise toe harudesse, kuid see staatus antakse alles oktoobris pärast stabiliseerimist. Node.js 20.x toetust jätkatakse kuni 30. aprillini 2026. eelmise LTS-haru Node.js 18.x toetamine kestab kuni aprilli 2025 ning eelmise LTS-haru 16.x toetamine kuni septembrini 2023. LTS-haru 14.x toetamine lõppeb 30. aprillil ning vahepealse haru Node.js 19.x puhul 1. juunil.

Peamised täiustused:

  • Mootor V8 on uuendatud versioonile 11.3, mida kasutatakse Chromiumis 113. Muudatused võrreldes Node.js 19 haruga, kus kasutati Chromiumi versiooni 107, sisaldavad funktsioone String.prototype.isWellFormed ja toWellFormed, Array.prototype ja TypedArray.prototype meetodeid objektide Array ja TypedArray koopia muutmiseks, RegExp'i 'v' lippu, ArrayBuffer'i suuruse muutmise toetust ja SharedArrayBuffer'i suuruse kasvatamist, samuti tagasitootmist (tail-call) WebAssembly's.
  • Предложен экспериментальный механизм Permission Model, позволяющий ограничить доступ к определённым ресурсам в процессе исполнения. Поддержка Permission Model включается через указание при запуске флага «—experimental-permission». В начальной реализации предложены опции для ограничения доступа на запись (—allow-fs-write) и чтение (—allow-fs-read) к определённым частям ФС, дочерним процессам (—allow-child-process), дополнениям (—no-addons) и потокам (—allow-worker). Например, чтобы разрешить запись в каталог /tmp и чтение файла /home/index.js можно указать: node —experimental-permission —allow-fs-write=/tmp/ —allow-fs-read=/home/index.js index.js

    Juurdepääsu kontrollimiseks soovitatakse kasutada meetodit process.permission.has(), näiteks „process.permission.has('fs.write', '/tmp/test')“.

  • Väliste ECMAScripti (ESM) moodulite töötlejad, mis laaditakse parameetriga „—experimental-loader“, töötatakse nüüd eraldi lõimes, isoleeritud põhivoolust, mis välistab rakenduste ja laaditud ESM-moodulite koodi ristumisen. Sarnaselt brauseritele, meetod import.meta.resolve() rakenduse kontekstis käitatakse nüüd sünkroonses režiimis. Ühes järgnevates Node.js harudes plaanitakse ESM-i laadimist toetav funktsioon viia stabiilsete võimekuste hulka.
  • Node:test (test_runner) moodul on viidud stabiilsete hulka, mis on mõeldud JavaScripti testide loomiseks ja käitamiseks, tagastades tulemuse TAP (Test Anything Protocol) formaadis.
  • On moodustatud eriline arendajate meeskond, kes vastutab jõudluse optimeerimise eest, ja kes valmistas ette uut haru, kiirendades erinevaid runtime-komponente, sealhulgas URL-i analüüsi, fetch() ja EventTarget. Näiteks on EventTarget'i algatamise kulud vähenenud kaks korda, URL.canParse() meetodi jõudlus on oluliselt paranenud ning ajastite efektiivsus on suurenenud. Lisaks on lisatud kõrgetasemeline URL-i analüsaator — Ada 2.0, mis on kirjutatud C++ keeles.
  • Katsetamise funktsiooni arendamine rakenduste tarnimiseks ühe käivitatava faili kujul (SEA, Single Executable Applications) jätkub. Käivitava faili loomine nõuab nüüd blob'i asendamist, mis genereeritakse JSON-formaadis konfingu faili põhjal (JavaScript-faili asendamise asemel).
  • API Web Crypto ühilduvust teiste projektide rakendustega on parandatud.
  • Windowsi ametlik toetus on lisatud ARM64 süsteemidele.
  • WASI (WebAssembly System Interface) laienduste toe rakendamine, et luua eraldiseisvaid WebAssembly rakendusi, jätkub. WASI toe lubamiseks ei ole enam spetsiaalset käsurea lippu vaja.

Node.js platvormi saab kasutada nii veebirakenduste serveripoolseks toe tagamiseks kui ka tavaliste klient-serveri võrgurakenduste loomiseks. Node.js jaoks on välja töötatud suur moodulite kogumik, kust leiate mooduleid, mis hõlmavad serverid HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 kliente, mooduleid erinevate veebiraamistike integreerimiseks, WebSocket ja Ajax töötlejat, andmebaasi ühendusi (MySQL, PostgreSQL, SQLite, MongoDB), malligeneraatorid, CSS-mootorid, krüptoalgoritmide rakendused ja autentimissüsteemid (OAuth), XML-parsereid.

Suurte paralleelsete päringute töötlemise tagamiseks kasutab Node.js asünkroonset koodikäivitamise mudelit, mis põhineb mitteblokeerival sündmustöötlusel ja tagasiside töötlejate määramisel. Ühenduste multiplexerimise meetoditeks on sellised meetodid nagu epoll, kqueue, /dev/poll ja select. Ühenduste multiplexerimiseks kasutatakse libuv teeki, mis on libevi peal Unix-süsteemides ja IOCP peal Windowsis. Tööde võrgu loomise jaoks kasutatakse libeio teeki, niisuguste mitteblokeerivate DNS-päringute töötlemiseks on integreeritud c-ares. Kõik süsteemikutsed, mis põhjustavad blokeerimist, toimuvad teede grupis ja edastavad seejärel oma töö tulemuse tagasi anonüümse kanali kaudu (pipe). JavaScripti koodi täitmine toimub Google'i välja töötatud V8 mootori kaudu (Microsoft arendab lisaks versiooni Node.js Chakra-Core mootori kasutades).

Oma olemuselt on Node.js sarnane Perl AnyEvent, Ruby Event Machine, Python Twisted raamistikele ja sündmuste rakendusele Tcl-is, kuid Node.js sündmuste töötlemise ring on arendajate eest peidetud ja sarnaneb veebirakenduse sündmuste töötlemisega, mis töötab brauseris. Node.js rakenduste kirjutamisel tuleb arvestada sündmustepõhise programmeerimise eripära, näiteks, selle asemel, et täita "var result = db.query('select..');" oodates töö valmimist ja seejärel tulemuste töötlemist, kasutatakse Node.js-is asünkroonilise täitmise printsiipi, st kood muudetakse "db.query('select..', function (result) {tulemuse töötlemine});", mille puhul juhtimine läheb koheselt järgmisele koodile ja päringu tulemust töödeldakse andmete saamisel.

Allikas: opennet.ru

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster