Serverio pusės JavaScript Node.js 14.0 leidimas

įvyko paleisti „Node.js 14.0“,platformos, skirtos tinklo programoms paleisti JavaScript. Node.js 14.0 yra ilgalaikio palaikymo šaka, tačiau ši būsena bus priskirta tik spalį, stabilizavus. Bus palaikoma Node.js 14.0 būti atliktas iki 2023 m. balandžio mėn. Ankstesnio LTS filialo Node.js 12.0 priežiūra truks iki 2022 m. balandžio mėn., o užpernai LTS filialo 10.0 – iki 2021 m. balandžio mėn. 13.x inscenizacijos šakos parama baigsis šių metų birželį.

pagrindinis patobulinimai:

  • Gebėjimas generuoti skrydžio metu arba įvykus tam tikriems įvykiams buvo stabilizuotas diagnostikos ataskaitos, kuriuose rodomi įvykiai, padedantys diagnozuoti tokias problemas kaip gedimai, našumo pablogėjimas, atminties nutekėjimas, didelė procesoriaus apkrova, netikėtos klaidos išvestis ir kt.
  • Pridėtas eksperimentinis API palaikymas Asinchroninė vietinė saugykla įdiegus AsyncLocalStorage klasę, kurią naudojant galima sukurti asinchroninę būseną su tvarkytojais, remiantis atgaliniais skambučiais ir pažadais. AsyncLocalStorage leidžia saugoti duomenis, kol apdorojama žiniatinklio užklausa, primenanti gijų vietinę saugyklą kitomis kalbomis.
  • Įkeliant pašalintas įspėjamasis pranešimas apie eksperimentinę funkciją moduliai „ECMAScript 6“ prijungtas ir eksportuotas naudojant importo ir eksporto ataskaitas. Tuo pačiu metu pats ESM modulių diegimas išlieka eksperimentinis.
  • V8 variklis atnaujintas į versiją 8.1 (1, 2, 3), kuri apima naujus našumo optimizavimus ir funkcijas, tokias kaip naujas loginės sujungimo operatorius "???" (pateikia dešinįjį operandą, jei kairysis operandas yra NULL arba neapibrėžtas, ir atvirkščiai), operatorius „? vienkartiniam visos ypatybių arba iškvietimų grandinės patikrinimui (pavyzdžiui, „db?.user?.name?.length“ be išankstinių patikrinimų), Intl.DisplayName metodas lokalizuotiems pavadinimams gauti ir kt.
  • Buvo atlikta Streams API peržiūra, siekiant pagerinti Streams API nuoseklumą ir pašalinti pagrindinių Node.js dalių veikimo skirtumus. Pavyzdžiui, http.OutgoingMessage elgesys yra artimas stream.Writable, o net.Socket panašus į stream.Duplex. Pagal numatytuosius nustatymus parinktis „autoDestroy“ nustatyta į „true“, o tai reiškia, kad baigus iškviesti „_destroy“.
  • Pridėtas eksperimentinis API palaikymas WASI (WebAssembly sistemos sąsaja), teikiančios programinės įrangos sąsajas tiesioginei sąveikai su operacine sistema (POSIX API darbui su failais, lizdais ir kt.).
  • Padidinti reikalavimai minimalios versijos kompiliatoriai ir platformos: macOS 10.13 (High Sierra), GCC 6, „Windows“ naujesnė versija 7/2008R2.

Prisiminkime, kad Node.js platforma gali būti naudojama tiek serverio žiniatinklio programų palaikymui, tiek įprastų klientų ir serverių tinklo programoms kurti. Norint išplėsti Node.js programų funkcionalumą, daug modulių kolekcija, kuriame galite rasti modulių su serverių ir klientų diegimu HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, modulius, skirtus integracijai su įvairiomis žiniatinklio sistemomis, WebSocket ir Ajax tvarkykles, jungtis prie DBVS (MySQL, PostgreSQL, SQLite). , MongoDB ), šablonų varikliai, CSS varikliai, kriptografinių algoritmų diegimas ir autorizacijos sistemos (OAuth), XML analizatoriai.

Siekdama apdoroti daug lygiagrečių užklausų, Node.js naudoja asinchroninio kodo vykdymo modelį, pagrįstą neblokuojančiu įvykių apdorojimu ir apibrėžiančiomis atgalinio skambučio tvarkykles. Palaikomi jungčių tankinimo metodai yra epoll, kqueue, /dev/poll ir select. Biblioteka naudojama multipleksuoti ryšiams libuv, kuris yra antstatas libev „Unix“ sistemose ir per IOCP sistemoje „Windows“. Biblioteka naudojama gijų telkiniui sukurti libeio, yra integruota DNS užklausų vykdymui neblokuojančiu režimu c-ares. Visi sistemos iškvietimai, sukeliantys blokavimą, vykdomi gijų telkinyje, o tada, kaip ir signalų tvarkytojai, perduoda savo darbo rezultatus atgal per neįvardytą vamzdį. JavaScript kodo vykdymas užtikrinamas naudojant Google sukurtą variklį V8 (Be to, „Microsoft“ kuria „Node.js“ versiją su „Chakra-Core“ varikliu).

Iš esmės Node.js yra panašus į sistemas Perl AnyEvent, „Ruby“ įvykių mašina, Python Twisted и įgyvendinimas įvykius Tcl, tačiau įvykių ciklas Node.js yra paslėptas nuo kūrėjo ir panašus į įvykių tvarkymą žiniatinklio programoje, veikiančioje naršyklėje. Rašant paraiškas node.js, būtina atsižvelgti į įvykiais pagrįsto programavimo specifiką, pavyzdžiui, o ne daryti „var result = db.query(“select..”);“ su laukimu, kol bus baigtas darbas ir vėliau apdorojant rezultatus, Node.js naudoja asinchroninio vykdymo principą, t.y. kodas paverčiamas į „db.query(“select..”, funkcija (result) {result processing});”, kurioje valdymas iš karto pereis į tolimesnį kodą, o užklausos rezultatas bus apdorojamas gavus duomenis. .

Šaltinis: opennet.ru

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