Node.js 17.0, vettvangur til að keyra netforrit í JavaScript, hefur verið gefin út. Node.js 17.0 er hluti af venjulegri stuðningsgrein, og uppfærslur eru væntanlegar til júní 2022. Á næstu dögum mun Node.js 16 ljúka stöðugleika, verða LTS og vera studd til apríl 2024. Stuðningur við fyrri LTS greinina, Node.js 14.0, mun halda áfram til apríl 2023, og við fyrri LTS greinina, 12.0, til apríl 2022.
Helstu endurbætur:
- V8 vélin hefur verið uppfærð í útgáfu 9.5.
- Við héldum áfram að innleiða kjarnaútgáfur af API byggðar á Promise ósamstillta útreikningsviðmótinu. Auk áður lagðra Timers Promises og Streams Promises API-a, kynnir Node.js 17.0 Readline Promise API til að lesa gögn línu fyrir línu með því að nota readline eininguna. import * as readline from 'node:readline/promises'; import { stdin as input, stdout as output } from 'process'; const rl = readline.createInterface({ input, output }); const answer = await rl.question('Hvað finnst þér um Node.js?'); console.log('Takk fyrir verðmæta ábendingu: ${answer}'); rl.close();
- Meðfylgjandi OpenSSL bókasafnið hefur verið uppfært í útgáfu 3.0 (með því að nota gaffal af quictls/openssl með virkum stuðningi við QUIC samskiptareglur).
- Node.js útgáfan birtist nú í staflarakningum sem eru birtar þegar alvarlegar villur koma upp sem valda því að forritið hættir starfsemi.
Að auki hafa tvær veikleikar (CVE-2021-22959 og CVE-2021-22960) verið lagfærðir í nýjustu útgáfum af Node.js. Þessir veikleikar leyfa HTTP Request Smuggling (HRS) árásum, sem leyfa sendingu sérhannaðra viðskiptavinabeiðna til að sprauta skaðlegum JavaScript kóða inn í lotu annars notanda með því að senda illgjarnar viðskiptavinabeiðnir. Í bili er aðeins vitað að þessi vandamál stafa af rangri meðhöndlun bila milli HTTP hausnafnsins og tvípunktsins, sem og mismunandi meðhöndlun á vagnskilum og línusendingum í breytublokkinni sem notuð er þegar beiðnin er send í chunked ham.
Til áminningar má nefna að Node.js kerfið er hægt að nota bæði til að styðja vefforrit á netþjónum og til að búa til stöðluð netforrit á biðlara- og netþjónahlið. Til að auka virkni Node.js forrita hefur verið útbúið mikið safn af einingum, þar á meðal þær sem eru með útfærslum. netþjónum og biðlara HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, einingar fyrir samþættingu við ýmis veframma, WebSocket og Ajax meðhöndlunaraðilar, tengingar við gagnagrunnskerfi (MySQL, PostgreSQL, SQLite, MongoDB), sniðmátavélar, CSS vélar, útfærslur á dulritunaralgrímum og heimildarkerfum (OAuth), XML þáttun.
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
