Utjefte fan JavaSkript-platfoarm oan serverside Node.js 17.0

Node.js 17.0, in platfoarm foar it útfieren fan netwurkapplikaasjes yn JavaScript, waard frijlitten. Node.js 17.0 is in reguliere stipetûke dy't updates sil trochgean oant juny 2022. Yn 'e kommende dagen sil de stabilisaasje fan' e Node.js 16-ôfdieling foltôge wurde, dy't LTS-status krijt en sil wurde stipe oant april 2024. Ûnderhâld fan de foarige LTS branch fan Node.js 14.0 sil duorje oant april 2023, en it jier foar de lêste LTS branch 12.0 oant april 2022.

Main ferbetterings:

  • De V8-motor is bywurke nei ferzje 9.5.
  • De ymplemintaasje fan farianten fan 'e basis API basearre op it gebrûk fan' e Promise asynchrone komputerynterface is trochgien. Neist de earder oanbean Timers Promises en Streams Promises API's, yntrodusearret Node.js 17.0 de Readline Promise API foar it lêzen fan gegevens line foar line mei de readline module. ymportearje * as readline fan 'node:readline/promises'; ymportearje { stdin as ynfier, stdout as útfier } fan 'proses'; const rl = readline.createInterface({ input, output }); const antwurd = await rl.question('Wat fine jo fan Node.js?'); console.log('Tankewol foar jo weardefolle feedback: ${antwurd}'); rl.close();
  • De levere OpenSSL-bibleteek is bywurke nei ferzje 3.0 (in quictls/openssl-gabel mei QUIC-protokol-stipe ynskeakele wurdt brûkt).
  • Aktivearre de Node.js-ferzje om werjûn te wurden yn stapelspoaren dy't wurde útfierd yn gefal fan fatale flaters dy't feroarsaakje dat de applikaasje beëiniget.

Derneist kinne wy ​​​​de eliminaasje fan twa kwetsberens neame yn 'e hjoeddeistige tûken fan Node.js (CVE-2021-22959, CVE-2021-22960), dy't it mooglik meitsje om "HTTP Request Smuggling" (HRS) oanfallen út te fieren, wat tastean ús te wigjen yn 'e ynhâld fan oanfragen fan oare brûkers dy't ferwurke binne yn deselde thread tusken de frontend en efterkant (bygelyks, kweade JavaScript-koade kin wurde ynfoege yn in sesje fan in oare brûker). Details wurde letter ûntdutsen, mar foar no witte wy allinich dat de problemen wurde feroarsake troch ferkearde ôfhanneling fan spaasjes tusken de HTTP-headernamme en de kolon, lykas ek ferskate ôfhanneling fan karaturreturn en linefeedkarakters yn it parameterblok dat brûkt wurdt by it ferstjoeren it fersyk lichem yn dielen yn 'e "chunked" modus "

Lit ús ûnthâlde dat it Node.js-platfoarm kin brûkt wurde sawol foar serverside-stipe fan webapplikaasjes en foar it meitsjen fan gewoane client- en servernetwurkprogramma's. Om de funksjonaliteit fan applikaasjes foar Node.js út te wreidzjen, is in grutte samling modules taret, wêryn jo modules kinne fine mei de ymplemintaasje fan HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3-tsjinners en kliïnten, modules foar yntegraasje mei ferskate web frameworks, WebSocket en Ajax handlers , Anschlüsse nei DBMS (MySQL, PostgreSQL, SQLite, MongoDB), template motors, CSS motors, ymplemintaasjes fan kryptografyske algoritmen en autorisaasje systemen (OAuth), XML parsers.

Om de ferwurking fan in grut oantal parallelle fersiken te garandearjen, brûkt Node.js in asynchronous koade-útfiermodel basearre op net-blokkearjende evenemint-ôfhanneling en de definysje fan callback-hannelers. Stipe metoaden foar multiplexing ferbinings binne epoll, kqueue, /dev/poll, en selektearje. Foar ferbiningsmultiplexing wurdt de libuv-bibleteek brûkt, dat is in tafoeging foar libev op Unix-systemen en IOCP op Windows. De libeio-bibleteek wurdt brûkt om in threadpool te meitsjen, c-ares is yntegreare om DNS-fragen út te fieren yn net-blokkearjende modus. Alle systeemoproppen dy't blokkearje feroarsaakje, wurde útfierd yn 'e threadpool en dan, lykas sinjaalhannelers, it resultaat fan har wurk werom fia in net neamde piip (pipe). De útfiering fan JavaScript-koade wurdt levere troch it brûken fan de V8-motor ûntwikkele troch Google (dêrneist ûntwikkelet Microsoft in ferzje fan Node.js mei de Chakra-Core-motor).

Yn har kearn is Node.js fergelykber mei de Perl AnyEvent, Ruby Event Machine, Python Twisted-frameworks, en de ymplemintaasje fan Tcl-evenemint, mar de barren-loop yn Node.js is ferburgen foar de ûntwikkelder en liket op evenemintehanneling yn in webapplikaasje dy't rint yn browser. By it skriuwen fan applikaasjes foar node.js, moatte jo beskôgje de spesifiken fan evenemint-oandreaune programmearring, bygelyks, ynstee fan in dwaan "var result = db.query ("selektearje ..");" mei wachtsjen op foltôging fan wurk en folgjende ferwurking fan resultaten, Node.js brûkt it prinsipe fan asynchronous útfiering, d.w.s. de koade wurdt omfoarme ta "db.query ("selektearje ..", funksje (resultaat) {resultaat ferwurking});", dêr't kontrôle sil daliks trochjaan oan fierdere koade, en de query resultaat wurdt ferwurke as gegevens oankomme.

Boarne: opennet.ru

Add a comment