Galima serverio JavaScript platforma Node.js 18.0

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

Pagrindiniai patobulinimai:

  • V8 variklis buvo atnaujintas iki 10.1 versijos, kuri naudojama Chromium 101. Palyginti su 17.9.0 Node.js leidimu, dabar palaikomos tokios funkcijos kaip findLast ir findLastIndex metodai, skirti elementų paieškai, palyginti su masyvą ir funkciją Intl.supportedValuesOf. Patobulinta Intl.Locale API. Paspartintas klasių laukų ir privačių metodų inicijavimas.
  • Eksperimentinė fetch() API įgalinta pagal numatytuosius nustatymus, skirta įkelti išteklius tinkle. Diegimas pagrįstas kodu iš HTTP/1.1 undici kliento ir yra kuo panašesnis į panašią API, teikiamą naršyklėse. Tai apima FormData, antraščių, užklausų ir atsakymų sąsajų palaikymą, skirtą valdyti HTTP užklausų ir atsakymų antraštes. const res = laukti atnešimo ('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = laukti res.json(); console.log(duomenys); }
  • Pridėtas eksperimentinis Web Streams API diegimas, suteikiantis prieigą prie duomenų srautų, gautų per tinklą. API leidžia pridėti savo tvarkytojus, kad jie dirbtų su duomenimis, kai informacija ateina per tinklą, nelaukiant, kol bus atsiųstas visas failas. Dabar Node.js pasiekiami objektai: ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream ir DecompressionStream.
  • „Blob“ API buvo perkelta į stabilią, todėl galite įterpti nekintamus neapdorotus duomenis, kad galėtumėte saugiai naudoti įvairiose darbuotojų gijose.
  • „BroadcastChannel“ API tapo stabili, todėl galite organizuoti apsikeitimą žinutėmis asinchroniniu režimu formatu „vienas siuntėjas – daug gavėjų“.
  • Pridėtas eksperimentinis modulis node:testas, skirtas kurti ir vykdyti „JavaScript“ testus, kurie pateikia rezultatus TAP (Test Anything Protocol) formatu.
  • Pateikiamas paruoštų rinkinių, skirtų Red Hat Enterprise Linux (RHEL) 8 ir kitiems platinimams, pagrįstiems Glibc 2.28+, įskaitant Debian 10 ir Ubuntu 20.04, taip pat macOS 10.15+, generavimas. Dėl problemų, susijusių su V8 ​​variklio kūrimu, 32 bitų versijų, skirtų „Windows“, kūrimas buvo laikinai sustabdytas.
  • Suteikta eksperimentinė parinktis sukurti Node.js vykdomąjį failą su vartotojo pasirinktais komponentais, inicijuotais paleidžiant. Norint apibrėžti pradinius komponentus, prie konfigūravimo kūrimo scenarijaus buvo pridėta parinktis „--node-snapshot-main“, pavyzdžiui, „./configure —node-snapshot-main=marked.js; pavadinimo mazgas"

Node.js platforma gali būti naudojama tiek žiniatinklio programų serverių priežiūrai, tiek įprastų klientų ir serverių tinklo programoms kurti. Aplikacijų, skirtų Node.js, funkcionalumui praplėsti, parengta didelė modulių kolekcija, kurioje galima rasti modulių su HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 serverių ir klientų diegimu, modulių integravimui su įvairiomis žiniatinklio sistemomis, „WebSocket“ ir „Ajax“ tvarkytuvais, DBMS jungtimis (MySQL, PostgreSQL, SQLite, MongoDB), šablonų varikliais, CSS varikliais, kriptovaliutų algoritmų diegimu ir autorizacijos sistemomis (OAuth), XML analizatoriais.

Siekdama užtikrinti daugelio lygiagrečių užklausų apdorojimą, Node.js naudoja asinchroninio kodo vykdymo modelį, pagrįstą neblokuojančiu įvykių tvarkymu ir atgalinio skambučio tvarkyklių apibrėžimu. Palaikomi jungčių tankinimo metodai yra epoll, kqueue, /dev/poll ir select. Ryšių tankinimui naudojama libuv biblioteka, kuri yra libev priedas Unix sistemose ir IOCP Windows sistemoje. Libeio biblioteka naudojama gijų telkiniui sukurti, o c-ares integruota DNS užklausoms atlikti neblokuojančiu režimu. Visi sistemos iškvietimai, sukeliantys blokavimą, yra vykdomi gijų telkinyje, o tada, kaip ir signalų tvarkytojai, perduoda savo darbo rezultatą atgal per neįvardytą vamzdį (vamzdį). „JavaScript“ kodo vykdymas užtikrinamas naudojant „Google“ sukurtą V8 variklį (be to, „Microsoft“ kuria „Node.js“ versiją 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

Добавить комментарий