Gefa út JavaScript vettvang Node.js 17.0 á netþjóni

Node.js 17.0, vettvangur til að keyra netforrit í JavaScript, kom út. Node.js 17.0 er venjulegt stuðningsútibú sem mun halda áfram að fá uppfærslur til júní 2022. Á næstu dögum verður lokið við stöðugleika Node.js 16 útibúsins sem fær LTS stöðu og verður stutt til apríl 2024. Viðhald á fyrra LTS útibúi Node.js 14.0 mun vara til apríl 2023 og árið áður síðasta LTS útibú 12.0 til apríl 2022.

Helstu endurbætur:

  • V8 vélin hefur verið uppfærð í útgáfu 9.5.
  • Innleiðing á afbrigðum af grunn-API sem byggir á notkun Promise ósamstilltu tölvuviðmótsins hefur haldið áfram. Til viðbótar við áður boðin Timers Promises og Streams Promises API, kynnir Node.js 17.0 Readline Promise API til að lesa gögn línu fyrir línu með því að nota readline eininguna. flytja inn * sem leslínu frá 'node:readline/promises'; flytja inn { stdin sem inntak, stdout sem úttak } úr 'ferli'; const rl = readline.createInterface({ input, output }); const svar = await rl.question('Hvað finnst þér um Node.js?'); console.log('Þakka þér fyrir dýrmæt álit þitt: ${answer}'); rl.close();
  • Meðfylgjandi OpenSSL bókasafn hefur verið uppfært í útgáfu 3.0 (notaður er quictls/openssl gaffal með QUIC samskiptastuðningi virkan).
  • Gerði kleift að birta Node.js útgáfuna í staflasporum sem eru sendar út ef banvænar villur verða sem valda því að forritinu lýkur.

Að auki má nefna útrýmingu tveggja veikleika í núverandi greinum Node.js (CVE-2021-22959, CVE-2021-22960), sem gera það mögulegt að framkvæma „HTTP Request Smuggling“ (HRS) árásir, sem leyfa okkur að fleygja okkur inn í innihald beiðna annarra notenda sem eru unnar í sama þræði á milli framenda og bakenda (til dæmis er hægt að setja illgjarn JavaScript kóða inn í setu annars notanda). Nánari upplýsingar verða birtar síðar, en í bili vitum við aðeins að vandamálin stafa af rangri meðhöndlun á bilum á milli HTTP-hausheitisins og tvípunktsins, auk mismunandi meðhöndlunar á flutningsskila- og línustöfum í færibreytublokkinni sem notaður er við sendingu meginmál beiðninnar í hlutum í „klumpum“ ham "

Við skulum muna að Node.js vettvangurinn er bæði hægt að nota til að styðja við vefforrit á netþjóni og til að búa til venjuleg netforrit fyrir biðlara og netþjóna. Til að auka virkni forrita fyrir Node.js hefur verið útbúið mikið safn eininga, þar sem þú getur fundið einingar með útfærslu á HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 netþjónum og viðskiptavinum, einingar til samþættingar með ýmsum vefumgjörðum, WebSocket og Ajax meðhöndlum , tengjum við DBMS (MySQL, PostgreSQL, SQLite, MongoDB), sniðmátvélum, CSS vélum, útfærslur á dulmálsreikniritum og heimildakerfum (OAuth), XML þáttavélum.

Til að tryggja vinnslu á miklum fjölda samhliða beiðna notar Node.js ósamstillt keyrslulíkan sem byggir á ólokandi atburðameðferð og skilgreiningu á meðhöndlun svarhringinga. Aðferðir sem studdar eru til að margfalda tengingar eru epoll, kqueue, /dev/poll og select. Fyrir tengingar margföldun er libuv bókasafnið notað, sem er viðbót fyrir libev á Unix kerfum og IOCP á Windows. Libeio bókasafnið er notað til að búa til þráðasafn og c-ares er samþætt til að framkvæma DNS fyrirspurnir í ólokandi ham. Öll kerfissímtöl sem valda lokun eru keyrð inni í þráðapottinum og flytja síðan, eins og merkjameðferðaraðilar, niðurstöðu vinnu sinnar aftur í gegnum ónefnda pípu (pípu). Framkvæmd JavaScript kóða er veitt með notkun V8 vélarinnar sem Google hefur þróað (auk þess er Microsoft að þróa útgáfu af Node.js með Chakra-Core vélinni).

Í kjarna sínum er Node.js svipað og Perl AnyEvent, Ruby Event Machine, Python Twisted ramma og Tcl viðburðarútfærslan, en viðburðarlykkjan í Node.js er falin þróunaraðilanum og líkist viðburðameðferð í vefforriti sem keyrir í vafra. Þegar þú skrifar forrit fyrir node.js þarftu að hafa í huga sérstöðu atburðadrifna forritunar, til dæmis í stað þess að gera "var result = db.query("select..");" með bið eftir verklokum og síðari úrvinnslu á niðurstöðum notar Node.js meginregluna um ósamstillta framkvæmd, þ.e. Kóðanum er umbreytt í "db.query("velja..", fall (niðurstaða) {niðurstöðuvinnsla});", þar sem stjórn mun samstundis fara í frekari kóða og niðurstöður fyrirspurnarinnar verða unnar þegar gögn berast.

Heimild: opennet.ru

Bæta við athugasemd