Strežniška izdaja JavaScript Node.js 14.0

potekala sprostitev Node.js 14.0,platforme za izvajanje omrežnih aplikacij v JavaScriptu. Node.js 14.0 je veja dolgoročne podpore, vendar bo ta status dodeljen šele oktobra, po stabilizaciji. Podprt bo Node.js 14.0 izvajati do aprila 2023. Vzdrževanje prejšnje veje LTS Node.js 12.0 bo trajalo do aprila 2022, predlanske veje LTS 10.0 pa do aprila 2021. Podpora za uprizoritveno vejo 13.x se bo končala junija letos.

Glavni izboljšave:

  • Sposobnost generiranja sproti ali ob nastopu določenih dogodkov je stabilizirana diagnostična poročila, ki prikazujejo dogodke, ki pomagajo pri diagnosticiranju težav, kot so zrušitve, poslabšanje zmogljivosti, uhajanje pomnilnika, velika obremenitev CPE-ja, nepričakovan izpis napak itd.
  • Dodana eksperimentalna podpora za API Asinhrona lokalna shramba z implementacijo razreda AsyncLocalStorage, ki se lahko uporablja za ustvarjanje asinhronega stanja z obdelovalci na podlagi povratnih klicev in obljub. AsyncLocalStorage vam omogoča shranjevanje podatkov med obdelavo spletne zahteve, kar spominja na lokalno shranjevanje niti v drugih jezikih.
  • Odstranjeno opozorilo o eksperimentalni funkciji pri nalaganju modulov ECMAScript 6 povezan in izvožen z uporabo stavkov za uvoz in izvoz. Hkrati sama implementacija modulov ESM ostaja eksperimentalna.
  • Motor V8 posodobljen na različico 8.1 (1, 2, 3), ki vključuje nove optimizacije delovanja in funkcije, kot je nov logični operator veriženja "??" (vrne desni operand, če je levi operand NULL ali nedefiniran, in obratno), operator "?." za enkratno preverjanje celotne verige lastnosti ali klicev (npr. “db?.user?.name?.length” brez predhodnih preverjanj), metoda Intl.DisplayName za pridobivanje lokaliziranih imen itd.
  • Izvedena je bila revizija API-ja Streams, katere namen je izboljšati konsistentnost API-jev Streams in odpraviti razlike v obnašanju osnovnih delov Node.js. Vedenje http.OutgoingMessage je na primer podobno stream.Writable, net.Socket pa je podobno stream.Duplex. Možnost autoDestroy je privzeto nastavljena na »true«, kar pomeni, da se po zaključku prikliče »_destroy«.
  • Dodana eksperimentalna podpora za API SEM BIL JAZ (Sistemski vmesnik WebAssembly), ki zagotavlja programske vmesnike za neposredno interakcijo z operacijskim sistemom (POSIX API za delo z datotekami, vtičnicami itd.).
  • Povečane zahteve za minimalne različice prevajalniki in platforme: macOS 10.13 (High Sierra), GCC 6, Windows novejši 7/2008R2.

Spomnimo se, da se lahko platforma Node.js uporablja tako za strežniško podporo spletnih aplikacij kot za ustvarjanje običajnih odjemalskih in strežniških omrežnih programov. Za razširitev funkcionalnosti aplikacij za Node.js je veliko število zbirka modulov, v katerem najdete module z implementacijo strežnikov in odjemalcev HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, module za integracijo z različnimi spletnimi ogrodji, upravljalnike WebSocket in Ajax, konektorje na DBMS (MySQL, PostgreSQL, SQLite). , MongoDB), motorji predlog, motorji CSS, implementacije kriptografskih algoritmov in avtorizacijskih sistemov (OAuth), razčlenjevalniki XML.

Za obravnavo velikega števila vzporednih zahtev Node.js uporablja model izvajanja asinhrone kode, ki temelji na obdelavi dogodkov brez blokiranja in definiranju obdelovalcev povratnih klicev. Podprte metode za multipleksiranje povezav vključujejo epoll, kqueue, /dev/poll in select. Knjižnica se uporablja za multipleksiranje povezav libuv, ki je nadgradnja nad libev v sistemih Unix in preko IOCP v sistemu Windows. Za ustvarjanje skupine niti se uporablja knjižnica libeio, za izvajanje poizvedb DNS v načinu brez blokiranja c-are. Vsi sistemski klici, ki povzročijo blokiranje, se izvedejo znotraj področja niti in nato, tako kot upravljavci signalov, posredujejo rezultat svojega dela nazaj skozi neimenovano cev. Izvajanje kode JavaScript je zagotovljeno z uporabo mehanizma, ki ga je razvil Google V8 (Poleg tega Microsoft razvija različico Node.js z motorjem Chakra-Core).

V svojem jedru je Node.js podoben ogrodjem Perl AnyEvent, Ruby Event Machine, Python Twisted и izvajanje dogodkov v Tcl, vendar je zanka dogodkov v Node.js skrita pred razvijalcem in je podobna obravnavanju dogodkov v spletni aplikaciji, ki se izvaja v brskalniku. Pri pisanju aplikacij za node.js je treba upoštevati specifiko programiranja, ki temelji na dogodkih, na primer namesto “var result = db.query(“select..”);” s čakanjem na zaključek dela in kasnejšo obdelavo rezultatov Node.js uporablja princip asinhronega izvajanja, tj. koda se preoblikuje v »db.query(»select..«, funkcija (rezultat) {obdelava rezultata});«, v kateri bo nadzor takoj prešel na nadaljnjo kodo, rezultat poizvedbe pa bo obdelan, ko podatki prispejo. .

Vir: opennet.ru

Dodaj komentar