Galima serverio JavaScript platforma Node.js 20.0

Išleista Node.js 20.0 – platforma, skirta tinklo programoms paleisti JavaScript. Node.js 20.0 priskiriamas ilgalaikės paramos šakai, tačiau ši būsena bus priskirta tik spalį, po stabilizavimo. Node.js 20.x bus palaikomas iki 30 m. balandžio 2026 d. Ankstesnio LTS filialo Node.js 18.x priežiūra truks iki 2025 m. balandžio mėn., o ankstesnio LTS filialo 16.x – iki 2023 m. rugsėjo mėn. 14.x LTS filialas bus nutrauktas balandžio 30 d., o Node.js 19.x sustojimo filialas – birželio 1 d.

Pagrindiniai patobulinimai:

  • V8 variklis buvo atnaujintas į 11.3 versiją, naudojamą Chromium 113. Pakeitimai, palyginti su Node.js 19 šaka, kurioje buvo naudojamas Chromium 107 variklis, apima String.prototype.isWellFormed ir toWellFormed funkcijas, Array.prototype ir TypedArray. prototipo metodai, skirti dirbti su kopija keičiant masyvo ir TypedArray objektus, „v“ vėliavėlė „RegExp“, „ArrayBuffer“ dydžio keitimo ir „SharedArrayBuffer“ dydžio padidinimo palaikymas, „WebAssembly“ uodegos rekursija (tail-call).
  • Buvo pasiūlytas eksperimentinis leidimų modelio mechanizmas, leidžiantis apriboti prieigą prie tam tikrų išteklių vykdymo metu. Leidimų modelio palaikymas įgalinamas nurodant žymą „--experimental-permission“, kai vykdoma. Pradinis diegimas siūlo parinktis apriboti rašymo (--allow-fs-write) ir skaitymo (--allow-fs-read) prieigą prie tam tikrų failų sistemos dalių, antrinių procesų (--allow-child-process) ir priedai (--no-addons) ) ir gijos (--allow-worker). Pavyzdžiui, norėdami leisti rašyti į /tmp katalogą ir skaityti failą /home/index.js, galite nurodyti: node —experimental-permission —allow-fs-write=/tmp/ —allow-fs-read=/home /index.js indeksas .js

    Norint patikrinti prieigą, siūloma naudoti metodą process.permission.has(), pavyzdžiui, „process.permission.has('fs.write',"/tmp/test").

  • ECMAScript išorinio modulio (ESM) tvarkyklės, įkeltos naudojant parinktį „--experimental-loader“, dabar veikia atskira gija, izoliuota nuo pagrindinės gijos, pašalinant programos kodo ir įkeltų ESM modulių sankirtą. Panašiai kaip naršyklėse, metodas import.meta.resolve() dabar vykdomas sinchroniškai, kai iškviečiamas iš programos. Vienoje iš kitų Node.js atšakų ESM įkėlimo palaikymą planuojama perkelti į stabilių funkcijų kategoriją.
  • Modulio mazgas:testas (test_runner), skirtas kurti ir vykdyti „JavaScript“ testus, kurie pateikia rezultatus TAP (Test Anything Protocol) formatu, buvo stabilus.
  • Buvo suformuota atskira kūrimo komanda, atsakinga už našumo optimizavimą, kuri, rengdama naują šaką, stengėsi pagreitinti įvairius vykdymo laiko komponentus, įskaitant URL analizavimą, fetch() ir EventTarget. Pavyzdžiui, „EventTarget“ inicijavimo išlaidos buvo sumažintos perpus, žymiai pagerėjo metodo URL.canParse() našumas ir patobulintas laikmačių efektyvumas. Tai taip pat apima didelio našumo URL analizatoriaus Ada 2.0, parašyto C++, išleidimą.
  • Toliau buvo plėtojama eksperimentinė galimybė teikti programas vieno vykdomojo failo pavidalu (SEA, Single Executable Applications). Norint sukurti vykdomąjį failą, dabar reikia pakeisti blob, sugeneruotą iš konfigūracijos failo JSON formatu (o ne pakeisti JavaScript failą).
  • Pagerintas Web Crypto API suderinamumas su kitų projektų diegimu.
  • Pridėta oficiali parama Windows ARM64 sistemose.
  • Buvo tęsiamas WASI (WebAssembly System Interface) plėtinių, skirtų atskiroms WebAssembly programoms kurti, palaikymas. Pašalintas poreikis nurodyti specialią komandinės eilutės vėliavėlę, kad įgalintumėte WASI palaikymą.

„Node.js“ platforma gali būti naudojama tiek žiniatinklio programų palaikymui serveryje, tiek standartinėms kliento ir serverio tinklo programoms kurti. Siekiant išplėsti „Node.js“ programų funkcionalumą, parengta didelė modulių kolekcija, įskaitant ir tuos, kurie įgyvendina serveriai ir HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 klientai, moduliai integracijai su įvairiomis žiniatinklio sistemomis, „WebSocket“ ir „Ajax“ tvarkyklės, jungtys su DBVS (MySQL, PostgreSQL, SQLite, MongoDB), šablonų varikliai, CSS varikliai, kriptografinių algoritmų ir autorizacijos sistemų (OAuth) įgyvendinimas, XML analizatoriai.

Norėdamas apdoroti didelį skaičių lygiagrečių užklausų, „Node.js“ naudoja asinchroninį kodo vykdymo modelį, pagrįstą neblokuojančiu įvykių apdorojimu ir atgalinio iškvietimo tvarkyklėmis. Palaikomi ryšio multipleksavimo metodai: „epoll“, „kqueue“, „/dev/poll“ ir „select“. Ryšio multipleksavimui naudojama „libuv“ biblioteka, kuri yra „libev“ bibliotekos „Unix“ sistemose ir „IOCP“ bibliotekos „IOCP“ bibliotekoje rinkinys. Windows„Libeio“ biblioteka naudojama gijų telkiniui sukurti, o „c-ares“ yra integruotas DNS užklausoms atlikti neblokuojančiu režimu. Visi blokuojantys sistemos iškvietimai vykdomi gijų telkinyje ir tada, kaip ir signalų tvarkyklės, grąžina savo rezultatus per neįvardintą kanalą. „JavaScript“ vykdymą užtikrina „Google“ V8 variklis („Microsoft“ taip pat kuria „Node.js“ variantą su „Chakra-Core“ varikliu).

Iš esmės Node.js yra panašus į Perl AnyEvent, Ruby Event Machine, Python Twisted sistemas ir Tcl įvykių įgyvendinimą, tačiau Node.js įvykių ciklas yra paslėptas nuo kūrėjo ir primena įvykių tvarkymą veikiančioje žiniatinklio programoje. naršyklėje. Rašydami node.js programas, turite atsižvelgti į įvykiais pagrįsto programavimo specifiką, pavyzdžiui, užuot darę "var result = db.query("select..");" su laukimu, kol bus baigtas darbas ir vėliau apdorojami rezultatai, Node.js naudoja asinchroninio vykdymo principą, t.y. kodas paverčiamas į "db.query("select..", funkcija (rezultatas) {rezultato apdorojimas});", kurioje valdymas akimirksniu pereis prie tolimesnio kodo, o užklausos rezultatas bus apdorojamas gavus duomenis.

Šaltinis: opennet.ru

Pirkite patikimą prieglobą svetainėms su DDoS apsauga, VPS VDS serveriais 🔥 Įsigykite patikimą svetainių talpinimą su DDoS apsauga, VPS VDS serveriais | ProHoster