Rhyddhau platfform JavaScript ochr y gweinydd Node.js 17.0

Rhyddhawyd Node.js 17.0, platfform ar gyfer rhedeg cymwysiadau rhwydwaith yn JavaScript. Mae Node.js 17.0 yn gangen gymorth reolaidd a fydd yn parhau i dderbyn diweddariadau tan fis Mehefin 2022. Yn y dyddiau nesaf, bydd y broses o sefydlogi cangen Node.js 16 yn cael ei gwblhau, a fydd yn derbyn statws LTS ac yn cael ei gefnogi tan fis Ebrill 2024. Bydd cynnal a chadw cangen flaenorol LTS o Node.js 14.0 yn para tan fis Ebrill 2023, a'r flwyddyn cyn y gangen LTS ddiwethaf 12.0 tan fis Ebrill 2022.

Prif welliannau:

  • Mae'r injan V8 wedi'i diweddaru i fersiwn 9.5.
  • Mae gweithredu amrywiadau o'r API sylfaenol yn seiliedig ar y defnydd o ryngwyneb cyfrifiadura asyncronaidd Addewid wedi parhau. Yn ogystal â'r APIs Addewidion Amser a Ffrydiau a gynigiwyd yn flaenorol, mae Node.js 17.0 yn cyflwyno'r API Addewid Readline ar gyfer darllen data fesul llinell gan ddefnyddio'r modiwl readline. mewnforio * fel llinell ddarllen o ‘node:readline/promises’; mewnforio { stdin fel mewnbwn, stdout fel allbwn } o 'proses'; const rl = readline.createInterface({ mewnbwn, allbwn }); const answer = aros rl.question(‘Beth wyt ti’n feddwl o Node.js?’); console.log(‘Diolch am eich adborth gwerthfawr: ${answer}’); rl.close();
  • Mae'r llyfrgell OpenSSL a gyflenwir wedi'i diweddaru i fersiwn 3.0 (defnyddir fforc quictls/openssl gyda chymorth protocol QUIC wedi'i alluogi).
  • Wedi galluogi'r fersiwn Node.js i gael ei arddangos mewn olion pentwr sy'n allbwn rhag ofn gwallau angheuol sy'n achosi i'r cais ddod i ben.

Yn ogystal, gallwn sôn am ddileu dau wendid yn y canghennau presennol o Node.js (CVE-2021-22959, CVE-2021-22960), sy'n ei gwneud hi'n bosibl cynnal ymosodiadau “Smyglo Cais HTTP” (HRS), sy'n caniatáu i ni roi lletem i mewn i gynnwys ceisiadau defnyddwyr eraill a broseswyd yn yr un edefyn rhwng y blaen a'r pen ôl (er enghraifft, gellir mewnosod cod JavaScript maleisus mewn sesiwn defnyddiwr arall). Datgelir y manylion yn ddiweddarach, ond am y tro dim ond am y tro rydym yn gwybod bod y problemau'n cael eu hachosi gan drin bylchau rhwng yr enw pennawd HTTP a'r colon yn anghywir, yn ogystal â thrin gwahanol nodau dychwelyd cerbydau a bwydo llinell yn y bloc paramedr a ddefnyddir wrth drosglwyddo corff y cais mewn rhannau yn y modd “talpio”

Gadewch inni gofio y gellir defnyddio platfform Node.js i gefnogi cymwysiadau Gwe ar ochr y gweinydd ac ar gyfer creu rhaglenni rhwydwaith cleientiaid a gweinyddwyr cyffredin. Er mwyn ehangu ymarferoldeb cymwysiadau ar gyfer Node.js, mae casgliad mawr o fodiwlau wedi'u paratoi, lle gallwch ddod o hyd i fodiwlau gyda gweithredu HTTP, SMTP, XMPP, DNS, FTP, IMAP, gweinyddwyr POP3 a chleientiaid, modiwlau ar gyfer integreiddio gyda fframweithiau gwe amrywiol, trinwyr WebSocket ac Ajax , cysylltwyr i DBMS (MySQL, PostgreSQL, SQLite, MongoDB), peiriannau templed, peiriannau CSS, gweithredu algorithmau cryptograffig a systemau awdurdodi (OAuth), parsers XML.

Er mwyn sicrhau bod nifer fawr o geisiadau cyfochrog yn cael eu prosesu, mae Node.js yn defnyddio model gweithredu cod asyncronaidd yn seiliedig ar drin digwyddiadau nad ydynt yn rhwystro a'r diffiniad o drinwyr galwadau yn ôl. Y dulliau a gefnogir ar gyfer cysylltiadau amlblecsio yw epoll, kqueue, /dev/poll, a dewis. Ar gyfer amlblecsio cysylltiad, defnyddir y llyfrgell libuv, sy'n ychwanegiad ar gyfer libev ar systemau Unix ac IOCP ar Windows. Defnyddir y llyfrgell libeio i greu cronfa edau, ac mae c-ares wedi'i integreiddio i gyflawni ymholiadau DNS yn y modd di-flocio. Mae'r holl alwadau system sy'n achosi blocio yn cael eu gweithredu y tu mewn i'r pwll edau ac yna, fel trinwyr signal, yn trosglwyddo canlyniad eu gwaith yn ôl trwy bibell ddienw (pibell). Darperir gweithrediad cod JavaScript trwy ddefnyddio'r injan V8 a ddatblygwyd gan Google (yn ogystal, mae Microsoft yn datblygu fersiwn o Node.js gyda'r injan Chakra-Core).

Yn greiddiol iddo, mae Node.js yn debyg i'r Perl AnyEvent, Ruby Event Machine, fframweithiau Python Twisted, a gweithrediad digwyddiad Tcl, ond mae'r ddolen digwyddiad yn Node.js wedi'i chuddio oddi wrth y datblygwr ac mae'n debyg i drin digwyddiadau mewn cymhwysiad gwe sy'n rhedeg mewn porwr. Wrth ysgrifennu ceisiadau ar gyfer nod.js, mae angen i chi ystyried manylion rhaglennu a yrrir gan ddigwyddiadau, er enghraifft, yn lle gwneud "var result = db.query ("select..");" gydag aros am gwblhau'r gwaith a phrosesu canlyniadau wedi hynny, mae Node.js yn defnyddio'r egwyddor o gyflawni asyncronaidd, h.y. mae'r cod yn cael ei drawsnewid yn "db.query ("select..", function (canlyniad) {prosesu canlyniad});", lle bydd rheolaeth yn trosglwyddo'n syth i god pellach, a bydd canlyniad yr ymholiad yn cael ei brosesu wrth i ddata gyrraedd.

Ffynhonnell: opennet.ru

Ychwanegu sylw