Zerbitzariaren aldeko JavaScript Node.js 17.0 bertsioa

Node.js 17.0, JavaScript-en sareko aplikazioak exekutatzeko plataforma kaleratu zen. Node.js 17.0 ohiko laguntza-adarra da, eta eguneraketak jasotzen jarraituko du 2022ko ekainera arte. Datozen egunetan, Node.js 16 adarraren egonkortzea amaituko da, LTS egoera jasoko duena eta 2024ko apirilera arte onartzen duena. Node.js 14.0-ren aurreko LTS adarraren mantentze-lanak 2023ko apirilera arte iraungo du, eta azken LTS 12.0 adarraren aurreko urtea 2022ko apirilera arte.

Hobekuntza nagusiak:

  • V8 motorra 9.5 bertsiora eguneratu da.
  • Promise konputazio asinkronoaren interfazearen erabileran oinarritutako oinarrizko APIaren aldaerak inplementatzen jarraitu da. Aurretik eskainitako Timers Promises eta Streams Promises APIez gain, Node.js 17.0-k Readline Promise APIa aurkezten du datuak lerroz lerro irakurtzeko readline modulua erabiliz. inportatu * readline gisa 'nodo:readline/promises'-tik; inportatu { stdin sarrera gisa, stdout irteera gisa } 'prozesutik'; const rl = readline.createInterface ({ sarrera, irteera }); const erantzuna = await rl.question('Zer iruditzen zaizu Node.js?'); console.log('Eskerrik asko zure iritzi baliotsuagatik: ${erantzuna}'); rl.close();
  • Emandako OpenSSL liburutegia 3.0 bertsiora eguneratu da (quictls/openssl fork bat erabiltzen da QUIC protokoloaren euskarria gaituta).
  • Node.js bertsioa aplikazioa amaitzea eragiten duten akats larrien kasuan ateratzen diren pila-arrastoetan bistaratzeko gaitu.

Gainera, Node.js-en egungo adarretan (CVE-2021-22959, CVE-2021-22960) bi ahultasun ezabatzea aipa dezakegu, "HTTP Request Smuggling" (HRS) erasoak egitea ahalbidetzen dutenak. utz iezaguzu frontend eta backend-aren artean hari berean prozesatutako beste erabiltzaileen eskaeren edukietan sartzeko (adibidez, JavaScript kode gaiztoa beste erabiltzaile baten saioan txerta daiteke). Xehetasunak geroago ezagutaraziko dira, baina oraingoz bakarrik dakigu arazoak HTTP goiburuko izenaren eta bi puntuen arteko zuriuneak gaizki maneiatzearengatik sortzen direla, bai eta transmisioan erabiltzen den parametro-blokean orga-itzuleraren eta lerroaren jarioaren karaktereen manipulazio desberdina ere. eskaeraren gorputza zatitan "zatituta" moduan "

Gogora dezagun Node.js plataforma web aplikazioen zerbitzariaren laguntzarako zein bezero eta zerbitzari sareko programa arruntak sortzeko erabil daitekeela. Node.js aplikazioen funtzionaltasuna zabaltzeko, modulu bilduma handi bat prestatu da, eta bertan HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 zerbitzariak eta bezeroak inplementatzen dituzten moduluak aurki ditzakezu, integratzeko moduluak. hainbat web esparrurekin, WebSocket eta Ajax kudeatzaileekin, DBMSrako konektoreekin (MySQL, PostgreSQL, SQLite, MongoDB), txantiloi-motorrekin, CSS motorrekin, algoritmo kriptografikoen eta baimen-sistemen inplementazioekin (OAuth), XML analizatzaileekin.

Eskaera paralelo ugariren prozesamendua ziurtatzeko, Node.js-ek kode asinkronoaren exekuzio-eredu bat erabiltzen du blokeatzen ez den gertaeren kudeaketan eta dei-itzuliaren kudeatzaileen definizioan oinarrituta. Konexioak multiplexatzeko onartzen diren metodoak epoll, kqueue, /dev/poll eta select dira. Konexio-multiplexatzeko, libuv liburutegia erabiltzen da, hau da, libev-en gehigarria Unix sistemetan eta IOCP Windows-en. Libeio liburutegia hari multzo bat sortzeko erabiltzen da, eta c-ares integratuta dago DNS kontsultak blokeatu gabeko moduan egiteko. Blokeoa eragiten duten sistema-dei guztiak hari multzoaren barruan exekutatzen dira eta, ondoren, seinale-kudeatzaileak bezala, beren lanaren emaitza izenik gabeko kanalizazio baten bidez (hodia) transferitzen dute. JavaScript kodearen exekuzioa Googlek garatutako V8 motorra erabiliz ematen da (gainera, Microsoft Node.js bertsio bat garatzen ari da Chakra-Core motorrekin).

Funtsean, Node.js Perl AnyEvent, Ruby Event Machine, Python Twisted esparruen eta Tcl gertaeren inplementazioaren antzekoa da, baina Node.js-en gertaeren begizta garatzaileari ezkutatuta dago eta exekutatzen ari den web aplikazio batean gertaeren kudeaketaren antza du. nabigatzailean. Node.js aplikazioak idaztean, gertaerak gidatutako programazioaren berezitasunak kontuan hartu behar dituzu, adibidez, "var result = db.query("select..");" egin beharrean. lana amaitu eta ondorengo emaitzak prozesatzeko zain egonda, Node.js-ek exekuzio asinkronoaren printzipioa erabiltzen du, hau da. kodea "db.query("hautatu..", funtzioa (emaitza) {emaitza prozesatzea});, eta bertan kontrola berehala pasako da beste kode batera, eta kontsultaren emaitza datuak iristen diren heinean prozesatu egingo da.

Iturria: opennet.ru

Gehitu iruzkin berria