Pagpagawas sa server-side nga JavaScript platform nga Node.js 17.0

Ang Node.js 17.0, usa ka plataporma alang sa pagpadagan sa mga aplikasyon sa network sa JavaScript, gipagawas. Ang Node.js 17.0 usa ka regular nga sanga sa suporta nga magpadayon nga makadawat mga update hangtod Hunyo 2022. Sa umaabot nga mga adlaw, ang pagpalig-on sa sanga sa Node.js 16 makompleto, nga makadawat sa status sa LTS ug suportahan hangtod Abril 2024. Ang pagmentinar sa miaging LTS nga sanga sa Node.js 14.0 molungtad hangtod Abril 2023, ug sa tuig sa wala pa ang miaging LTS nga sanga 12.0 hangtod Abril 2022.

Panguna nga mga pag-uswag:

  • Ang V8 nga makina gi-update sa bersyon 9.5.
  • Nagpadayon ang pagpatuman sa mga variant sa batakang API base sa paggamit sa Promise asynchronous computing interface. Dugang pa sa naunang gitanyag nga Timers Promises and Streams Promises APIs, ang Node.js 17.0 nagpaila sa Readline Promise API para sa pagbasa sa data linya sa linya gamit ang readline module. import * isip readline gikan sa 'node:readline/promises'; import {stdin isip input, stdout isip output} gikan sa 'proseso'; const rl = readline.createInterface({input, output }); const answer = maghulat rl.question('Unsay imong hunahuna sa Node.js?'); console.log('Salamat sa imong bililhong feedback: ${answer}'); rl.close();
  • Ang gihatag nga librarya sa OpenSSL gi-update sa bersyon 3.0 (usa ka quictls/openssl fork nga adunay suporta sa QUIC protocol ang gigamit).
  • Gi-enable ang bersyon sa Node.js nga mapakita sa stack traces nga ma-output sa kaso sa makamatay nga mga kasaypanan nga maoy hinungdan sa pag-undang sa aplikasyon.

Dugang pa, mahimo natong hisgutan ang pagwagtang sa duha ka mga kahuyangan sa kasamtangan nga mga sanga sa Node.js (CVE-2021-22959, CVE-2021-22960), nga nagpaposible sa paghimo sa "HTTP Request Smuggling" (HRS) nga mga pag-atake, nga tugoti kami sa pag-wedge sa sulod sa mga hangyo sa ubang mga user nga giproseso sa samang thread tali sa frontend ug backend (pananglitan, ang malisyosong JavaScript code mahimong isulod sa sesyon sa laing user). Ang mga detalye ipadayag sa ulahi, apan sa pagkakaron nahibal-an ra naton nga ang mga problema gipahinabo sa dili husto nga pagdumala sa mga wanang tali sa ngalan sa header sa HTTP ug sa colon, ingon man ang lainlaing pagdumala sa pagbalik sa karwahe ug mga karakter sa feed sa linya sa parameter block nga gigamit sa pagpadala. ang hangyo nga lawas sa mga bahin sa "chunked" mode "

Atong hinumdoman nga ang Node.js nga plataporma mahimong magamit alang sa server-side nga suporta sa mga aplikasyon sa Web ug alang sa pagmugna og ordinaryo nga kliyente ug mga programa sa network sa server. Aron mapalapad ang pag-andar sa mga aplikasyon alang sa Node.js, usa ka dako nga koleksyon sa mga module ang giandam, diin makit-an nimo ang mga module nga adunay pagpatuman sa HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 server ug kliyente, mga module alang sa panagsama. uban sa nagkalain-laing web frameworks, WebSocket ug Ajax handler , connectors sa DBMS (MySQL, PostgreSQL, SQLite, MongoDB), template engines, CSS engines, pagpatuman sa cryptographic algorithms ug authorization systems (OAuth), XML parsers.

Aron maseguro ang pagproseso sa daghang gidaghanon sa parallel requests, ang Node.js naggamit ug asynchronous code execution model base sa non-blocking event handling ug ang definition sa callback handler. Gisuportahan nga mga pamaagi alang sa multiplexing nga mga koneksyon mao ang epoll, kqueue, /dev/poll, ug pilia. Alang sa koneksyon multiplexing, ang libuv library gigamit, nga usa ka add-on alang sa libev sa Unix system ug IOCP sa Windows. Ang libeio library kay gigamit sa paghimo ug thread pool, ug ang c-ares gi-integrate para sa DNS query sa non-blocking mode. Ang tanan nga mga tawag sa sistema nga hinungdan sa pagbabag gihimo sa sulod sa thread pool ug dayon, sama sa mga tigdumala sa signal, ibalhin ang resulta sa ilang trabaho balik pinaagi sa usa ka wala nganli nga tubo (pipe). Ang pagpatuman sa JavaScript code gihatag pinaagi sa paggamit sa V8 nga makina nga gimugna sa Google (dugang pa, ang Microsoft nagpalambo sa usa ka bersyon sa Node.js nga adunay Chakra-Core nga makina).

Sa kinauyokan niini, ang Node.js susama sa Perl AnyEvent, Ruby Event Machine, Python Twisted frameworks, ug ang Tcl event nga pagpatuman, apan ang event loop sa Node.js gitago gikan sa developer ug susama sa pagdumala sa panghitabo sa usa ka web application nga nagdagan. sa browser. Sa pagsulat sa mga aplikasyon alang sa node.js, kinahanglan nimong tagdon ang mga detalye sa programa nga gipalihok sa panghitabo, pananglitan, imbes nga buhaton ang "var result = db.query("select..");" uban sa paghulat sa pagkompleto sa trabaho ug sa sunod nga pagproseso sa mga resulta, ang Node.js naggamit sa prinsipyo sa asynchronous execution, i.e. ang code giusab ngadto sa "db.query("select..", function (resulta) {result processing});", diin ang kontrol moagi dayon sa dugang nga code, ug ang resulta sa pangutana maproseso sa pag-abot sa datos.

Source: opennet.ru

Idugang sa usa ka comment