Server-side JavaScript Node.js 17.0 kuburitswa

Node.js 17.0, chikuva chekushandisa network application muJavaScript, yaburitswa. Node.js 17.0 ndeyebazi rinotsigira nguva dzose, iro richawana zvigadziridzo kusvika munaJune 2022. Mumazuva anotevera, bazi reNode.js 16 richagadziriswa, richawana LTS mamiriro uye richatsigirwa kusvika muna April 2024. Iyo yapfuura LTS bazi Node.js 14.0 ichatsigirwa kusvika April 2023 LTS, uye 12.0 April 2022 yapfuura bazi.

Mabhindauko makuru:

  • Iyo V8 injini yakagadziridzwa kune vhezheni 9.5.
  • Kuenderera mberi nekuitwa kwepakati API akasiyana zvichienderana nePromise asynchronous computation interface. Pamusoro peiyo yakambotaurwa yeTimers Promises uye Streams Promises APIs, Node.js 17.0 inosuma iyo Readline Promise API yekuverenga data mutsara nemutsara uchishandisa iyo yekuverenga module. import * sekuverenga kubva ku 'node:readline/promises'; pinza {stdin sekuisa, stdout sekubuda } kubva 'kuita'; const rl = readline.createInterface ({kupinza, kubuda }); const answer = kumirira rl.question('Unofungei nezveNode.js?'); console.log('Ndinokutendai nemhinduro yako yakakosha: ${answer}'); rl.close();
  • Raibhurari yeOpenSSL inosanganisirwa yakagadziridzwa kuita vhezheni 3.0 (ichishandisa quictls/openssl fork ine QUIC protocol rutsigiro inogoneswa).
  • Iva nechokwadi chekuti vhezheni yeNode.js inoratidzwa mumaturakiti anobuda kana kukanganisa kunouraya kwaitika izvo zvinoita kuti application ipere.

Pamusoro pezvo, tinogona kutaura kubviswa kwekusagadzikana kuviri mumapazi eNode.js (CVE-2021-22959, CVE-2021-22960), izvo zvinoita kuti zvibvirire kurwiswa kwekirasi ye "HTTP Chikumbiro Smuggling" (HRS), iyo inobvumira, nekutumira zvakagadzirirwa zvakagadzirirwa zvikumbiro zvevatengi, kupinza mukati mezvimwe zvinoyerera zvemukati memukati memukati memukati meseji. (semuenzaniso, zvinokwanisika kuzadzisa kutsiva kweakaipa JavaScript kodhi mune imwe mushandisi sesheni). Iwo mameseji achaburitswa gare gare, asi parizvino zvinongozivikanwa kuti matambudziko anokonzerwa nekubata zvisirizvo kwenzvimbo pakati pezita remusoro weHTTP nekoloni, pamwe nekubata kwakasiyana kwekutakura kudzoka kwengoro uye mutsara wekudyisa mavara muparameter block inoshandiswa pakuendesa mutumbi wekukumbira muzvikamu mu "chunked" modhi.

Sechiyeuchidzo, puratifomu yeNode.js inogona kushandiswa kutsigira mawebhusaiti ese ari maviri pamwe nekugadzira mapurogiramu enetwork evatengi nemaseva. Kuti zviwedzere kushanda kwemaapplication eNode.js, muunganidzwa mukuru wemamodule wakagadzirwa, kusanganisira ayo ane ma implementations. servers uye vatengi veHTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, mamodule ekubatanidza nehurongwa hwakasiyana-siyana hwewebhu, WebSocket neAjax handlers, connectors kuDBMS (MySQL, PostgreSQL, SQLite, MongoDB), mainjini etemplate, mainjini eCSS, mashandisirwo e cryptographic algorithms uye masisitimu ekubvumidza (OAuth), XML parsers.

Kuti ive nechokwadi chekugadziriswa kwenhamba huru yezvikumbiro zvakafanana, Node.js inoshandisa asynchronous code execution modhi yakavakirwa pane isiri-kuvhara chiitiko kubata uye tsananguro yevanobata callback. Nzira dzinotsigirwa dzekubatanidza kuwanda ndeye epoll, kqueue, /dev/poll, uye sarudza. Nekubatanidza kuwanda, raibhurari ye libuv inoshandiswa, inova yekuwedzera ye libev pane Unix masisitimu uye IOCP paWindows. Raibhurari yelibeio inoshandiswa kugadzira dziva reshinda, uye c-ares inosanganiswa kuita mibvunzo yeDNS mune isiri-yekuvharisa mode. Yese inofona system inokonzeresa kuvharika inoitwa mukati medziva reshinda uyezve, sevabati vechiratidzo, vanoendesa mhedzisiro yebasa ravo kumashure kuburikidza nepombi isina zita (pombi). Kuitwa kweJavaScript code kunopiwa kuburikidza nekushandiswa kweV8 injini yakagadzirwa neGoogle (nekuwedzera, Microsoft iri kugadzira shanduro yeNode.js neChakra-Core injini).

Pakati payo, Node.js yakafanana nePerl AnyEvent, Ruby Event Machine, Python Twisted frameworks, uye Tcl chiitiko chekuita, asi chiitiko loop muNode.js yakavanzwa kubva kumugadziri uye yakafanana nekubata chiitiko muwebhu application inoshanda. mubrowser. Paunenge uchinyora zvikumbiro zve node.js, iwe unofanirwa kufunga nezve chaiyo-inofambiswa nechiitiko chirongwa, semuenzaniso, pane kuita "var result = db.query("select..");" nekumirira kupedzwa kwebasa uye kunotevera kugadziriswa kwemigumisiro, Node.js inoshandisa nheyo yeasynchronous execution, i.e. iyo code inoshandurwa kuita "db.query("select..", function (result) {result processing});", umo kutonga kuchapfuura pakarepo kune imwe kodhi, uye mhinduro yemubvunzo ichagadziriswa kana data yasvika.

Source: opennet.ru