Ho lokolloa ha JavaScript Node.js 17.0 ka lehlakoreng la seva

Node.js 17.0, sethala sa ho tsamaisa lits'ebetso tsa marang-rang ho JavaScript, se ile sa lokolloa. Node.js 17.0 ke lekala la tšehetso la kamehla le tla tsoelapele ho fumana lintlafatso ho fihlela Phuptjane 2022. Matsatsing a tlang, ho tsitsisoa ha lekala la Node.js 16 ho tla phethoa, e tla fumana boemo ba LTS mme e tla tšehetsoa ho fihlela ka April 2024. Tlhokomelo ea lekala la pele la LTS la Node.js 14.0 e tla tšoarella ho fihlela Mmesa 2023, le selemo pele ho LTS lekala la 12.0 ho fihlela ka Mmesa 2022.

Lintlafatso tsa mantlha:

  • Enjene ea V8 e ntlafalitsoe hore e be mofuta oa 9.5.
  • Ts'ebetsong ea mefuta e fapaneng ea API ea motheo e thehiloeng ts'ebelisong ea Promise asynchronous computing interface e tsoetse pele. Ho phaella ho Litšepiso tsa Li-Timers le Litšepiso tsa Streams APIs, Node.js 17.0 e hlahisa Readline Promise API bakeng sa ho bala lintlha ka mola ho sebelisa module ea bala. kenya * joalo ka mola oa ho bala ho tsoa ho 'node:readline/promises'; import {stdin as input, stdout as output } ho tswa ho 'process'; const rl = readline.createInterface ({ho kenya, tlhahiso }); const answer = emela rl.potso('U nahana'ng ka Node.js?'); console.log('Kea leboha ka maikutlo a hau a bohlokoa: ${answer}'); rl. koala();
  • Laeborari e fanoeng ea OpenSSL e ntlafalitsoe hore e be mofuta oa 3.0 (ho sebelisoa fereko ea quictls/openssl e nang le tšehetso ea protocol ea QUIC e lumelletsoeng).
  • E nolofalitse mofuta oa Node.js hore o bontšoe ho li-stack trace tse hlahang haeba ho ka ba le liphoso tse bolaeang tse etsang hore sesebelisoa se khaotse.

Ho feta moo, re ka bua ka ho felisoa ha bofokoli tse peli makaleng a hajoale a Node.js (CVE-2021-22959, CVE-2021-22960), e etsang hore ho khonehe ho etsa litlhaselo tsa "HTTP Request Smuggling" (HRS), tseo re lumelle ho kenella ka har'a likahare tsa likopo tsa basebelisi ba bang tse sebetsitsoeng ka khoele e tšoanang lipakeng tsa sebaka se ka pele le se ka morao (mohlala, khoutu e mpe ea JavaScript e ka kengoa lenaneong la mosebelisi e mong). Lintlha li tla senoloa hamorao, empa hajoale re tseba feela hore mathata a bakoa ke ho sebetsana ka nepo ha libaka pakeng tsa lebitso la hlooho ea HTTP le kolone, hammoho le ho ts'oaroa ka mokhoa o fapaneng oa ho khutla ha koloi le litlhaku tsa phepelo ea mohala sebakeng sa parameter se sebelisoang ha se fetisetsa. 'mele oa kopo likarolong tsa "chunked" mode "

A re hopoleng hore sethala sa Node.js se ka sebelisoa ka bobeli bakeng sa ts'ehetso ea lehlakore la seva ea lits'ebetso tsa Webo le ho theha mananeo a tloaelehileng a bareki le marang-rang. Ho holisa ts'ebetso ea lits'ebetso tsa Node.js, ho lokiselitsoe pokello e kholo ea li-module, tseo ho tsona u ka fumanang li-module tse nang le ts'ebetsong ea HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 li-server le bareki, li-module tsa ho kopanya. e nang le mekhoa e fapaneng ea marang-rang, li-WebSocket le li-Ajax handlers, lihokelo tsa DBMS (MySQL, PostgreSQL, SQLite, MongoDB), lienjineri tsa template, lienjineri tsa CSS, ts'ebetsong ea li-algorithms tsa cryptographic le litsamaiso tsa tumello (OAuth), li-parser tsa XML.

Ho netefatsa ts'ebetso ea palo e kholo ea likopo tse ts'oanang, Node.js e sebelisa mokhoa o sa ts'oaneng oa ts'ebetso oa khoutu o ipapisitseng le ts'ebetso e sa thibeleng ea ketsahalo le tlhaloso ea batšoantšisi ba callback. Mekhoa e tšehelitsoeng bakeng sa likhokahano tsa multiplexing ke epoll, kqueue, /dev/poll, le khetha. Bakeng sa ho kopanya li-multiplexing, ho sebelisoa laeborari ea libuv, e leng tlatsetso bakeng sa libev lits'ebetsong tsa Unix le IOCP ho Windows. Laebrari ea libeio e sebelisetsoa ho etsa letamo la likhoele, 'me li-c-ares li kopantsoe ho etsa lipotso tsa DNS ka mokhoa o sa thibeleng. Mehala eohle ea sistimi e bakang thibelo e etsoa ka har'a letamo la likhoele, ebe, joalo ka batšoasi ba matšoao, ba fetisetsa sephetho sa mosebetsi oa bona ka phala e sa boleloang ka lebitso (pipe). Ts'ebetso ea khoutu ea JavaScript e fanoa ka ts'ebeliso ea enjene ea V8 e ntlafalitsoeng ke Google (ho feta moo, Microsoft e nts'etsapele mofuta oa Node.js ka enjene ea Chakra-Core).

Motheong oa eona, Node.js e tšoana le Perl AnyEvent, Ruby Event Machine, Python Twisted frameworks, le ts'ebetsong ea ketsahalo ea Tcl, empa leqhubu la ketsahalo ho Node.js le patiloe ho moqapi 'me le tšoana le ketsahalo ea ho sebetsana le ts'ebeliso ea websaete e sebetsang. ho seshebisi. Ha u ngola likopo tsa node.js, u lokela ho nahana ka lintlha tse tobileng tsa lenaneo le tsamaisoang ke liketsahalo, mohlala, ho e-na le ho etsa "var result = db.query("select..");" ka ho emela ho phethoa ha mosebetsi le ts'ebetso e latelang ea liphetho, Node.js e sebelisa molao-motheo oa ts'ebetso ea asynchronous, i.e. khoutu e fetoloa "db.query ("khetha ..", mosebetsi (sephetho) {result processing});", moo taolo e tla fetela hang-hang ho khoutu e eketsehileng, 'me sephetho sa potso se tla sebetsoa ha data e fihla.

Source: opennet.ru

Eketsa ka tlhaloso