Serverio pusės JavaScript Node.js 13.0 leidimas

Galima paleisti „Node.js 13.0“,platformos, skirtos tinklo programoms paleisti JavaScript. Tuo pačiu buvo baigtas ankstesnės Node.js 12.x šakos stabilizavimas, kuris perkeltas į ilgalaikio palaikymo leidimų kategoriją, kurių atnaujinimai išleidžiami 4 metams. Ankstesnio LTS 10.0 versijos Node.js filialo palaikymas tęsis iki 2021 m. balandžio mėn., o paskutinio LTS 8.0 atšakos – iki 2020 m. sausio mėn.

pagrindinis patobulinimai:

  • V8 variklis atnaujintas į versiją 7.8, kuriame naudojami nauji našumo optimizavimo būdai, pagerinamas objektų naikinimas, sumažėja atminties sąnaudos ir sutrumpėja pasiruošimo WebAssembly vykdymui laikas;
  • Pagal numatytuosius nustatymus įjungtas visiškas internacionalizavimo ir bibliotekų pagrindu veikiančio Unicode palaikymas ICU (International Components for Unicode), kuri leidžia kūrėjams rašyti kodą palaikantis dirbti su skirtingomis kalbomis ir vietomis. Viso icu modulis dabar įdiegtas pagal numatytuosius nustatymus;
  • API stabilizuota Darbininkų siūlai, leidžiantis sukurti kelių gijų įvykių kilpas. Diegimas pagrįstas moduliu worker_threads, kuris leidžia paleisti JavaScript kodą keliose lygiagrečiose gijose. Stabilus Workers Threads API palaikymas taip pat buvo perkeltas į Node.js 12.x LTS filialą;
  • Padidinti reikalavimai platformoms. Dabar surinkimui reikia bent macOS 10.11 (reikalingas Xcode 10), AIX 7.2, Ubuntu 16.04, Debian 9, EL 7, Alpine 3.8, Windows 7/2008;
  • Pagerintas Python 3 palaikymas. Jei sistemoje yra ir Python 2, ir Python 3, Python 2 vis dar naudojamas, tačiau buvo pridėta galimybė kurti, kai sistemoje įdiegtas tik Python 3;
  • Senasis HTTP analizatoriaus diegimas („—http-parser=legacy“) buvo pašalintas. Pašalinti arba nebenaudojami iškvietimai ir savybės FSWatcher.prototype.start(), ChildProcess._channel, open() metodas ReadStream ir WriteStream objektuose, request.connection, response.connection, module.createRequireFromPath();
  • Kitas tai paaiškėjo naujinimas 13.0.1, kuris greitai ištaisė keletą klaidų. Visų pirma, buvo išspręsta problema, susijusi su npm 6.12.0, rodančiomis įspėjimą apie nepalaikomos versijos naudojimą.

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

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