Jukwaa la JavaScript la upande wa seva Node.js 18.0 linapatikana

Node.js 18.0 ilitolewa, jukwaa la kuendesha programu za mtandao katika JavaScript. Node.js 18.0 imeainishwa kama tawi la usaidizi la muda mrefu, lakini hali hii itawekwa mnamo Oktoba pekee, baada ya uimarishaji. Node.js 18.x itatumika hadi Aprili 2025. Urekebishaji wa tawi la awali la LTS la Node.js 16.x utaendelea hadi Aprili 2024, na mwaka uliotangulia tawi la mwisho la LTS 14.x hadi Aprili 2023. Tawi la 12.x LTS litakomeshwa tarehe 30 Aprili, na tawi la Node.js 17.x litakomeshwa tarehe 1 Juni.

Maboresho kuu:

  • Injini ya V8 imesasishwa hadi toleo la 10.1, ambalo linatumika katika Chromium 101. Ikilinganishwa na toleo la 17.9.0 la Node.js, sasa kuna uwezo wa kutumia vipengele kama vile mbinu za findLast na findLastIndex za kutafuta vipengele vinavyohusiana na mwisho wa safu, na kitendakazi cha Intl.supportedValuesOf. API ya Intl.Locale iliyoboreshwa. Uanzishaji wa nyanja za darasa na njia za kibinafsi umeharakishwa.
  • API ya majaribio ya kuchota () imewashwa kwa chaguomsingi, iliyoundwa kwa ajili ya kupakia rasilimali kwenye mtandao. Utekelezaji unategemea msimbo kutoka kwa mteja wa HTTP/1.1 undici na uko karibu iwezekanavyo na API kama hiyo iliyotolewa katika vivinjari. Hii inajumuisha usaidizi wa violesura vya FormData, Vichwa, Ombi na Majibu kwa ajili ya kudhibiti ombi la HTTP na vichwa vya majibu. const res = subiri kuchota('https://nodejs.org/api/documentation.json'); ikiwa (res.ok) { const data = await res.json(); console.log(data); }
  • Utekelezaji wa majaribio wa API ya Mipasho ya Wavuti umeongezwa, kutoa ufikiaji wa mitiririko ya data iliyopokelewa kupitia mtandao. API hukuruhusu kuongeza vidhibiti vyako ili kufanya kazi na data maelezo yanapofika kwenye mtandao, bila kungoja faili nzima ipakuliwe. Vitu vinavyopatikana sasa katika Node.js ni pamoja na ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream, na DecompressionStream.
  • API ya Blob imesogezwa kuwa thabiti, hivyo kukuruhusu kuambatisha data mbichi isiyoweza kubadilika kwa matumizi salama katika nyuzi tofauti za wafanyikazi.
  • API ya BroadcastChannel imefanywa kuwa thabiti, ikikuruhusu kupanga ubadilishanaji wa ujumbe katika hali ya asynchronous katika umbizo la "mtumaji mmoja - wapokeaji wengi".
  • Imeongeza nodi ya moduli ya majaribio:jaribio la kuunda na kufanya majaribio katika JavaScript ambayo huleta matokeo katika umbizo la TAP (Test Anything Protocol).
  • Uzalishaji wa makusanyiko yaliyotengenezwa tayari kwa Red Hat Enterprise Linux (RHEL) 8 na usambazaji mwingine kulingana na Glibc 2.28+, ikiwa ni pamoja na Debian 10 na Ubuntu 20.04, pamoja na macOS 10.15+ hutolewa. Kwa sababu ya shida na muundo wa injini ya V8, uundaji wa ujenzi wa 32-bit kwa Windows umesimamishwa kwa muda.
  • Ilitoa chaguo la majaribio la kuunda Node.js inayoweza kutekelezeka na vipengee vilivyochaguliwa na mtumiaji vilivyoanzishwa mwanzoni. Ili kufafanua vipengele vya kuanzia, chaguo la "--node-snapshot-main" limeongezwa kwenye hati ya uundaji wa usanidi, kwa mfano, "./configure -node-snapshot-main=marked.js; nodi ya jina"

Jukwaa la Node.js linaweza kutumika kwa usaidizi wa upande wa seva wa programu za Wavuti, na kwa kuunda programu za mtandao za mteja na seva. Ili kupanua utendakazi wa programu za Node.js, mkusanyiko mkubwa wa moduli umeandaliwa, ambayo unaweza kupata moduli na utekelezaji wa HTTP, SMTP, XMPP, DNS, FTP, IMAP, seva za POP3 na wateja, moduli za ujumuishaji. yenye mifumo mbalimbali ya wavuti, vidhibiti vya WebSocket na Ajax , viunganishi vya DBMS (MySQL, PostgreSQL, SQLite, MongoDB), injini za violezo, injini za CSS, utekelezaji wa algoriti za kriptografia na mifumo ya uidhinishaji (OAuth), vichanganuzi vya XML.

Ili kushughulikia idadi kubwa ya maombi sawia, Node.js hutumia muundo wa utekelezaji wa msimbo usiolingana kulingana na uchakataji wa tukio lisilozuia na kufafanua vidhibiti vya urejeshaji simu. Mbinu zinazotumika za miunganisho ya kuzidisha ni pamoja na epoll, kqueue, /dev/poll, na select. Kwa uunganisho wa kuzidisha, maktaba ya libuv hutumiwa, ambayo ni nyongeza ya libev kwenye mifumo ya Unix na kwa IOCP kwenye Windows. Maktaba ya libeio inatumiwa kuunda mkusanyiko wa nyuzi, na c-ares imeunganishwa kutekeleza hoja za DNS katika hali isiyozuia. Simu zote za mfumo zinazosababisha kuzuia hutekelezwa ndani ya dimbwi la nyuzi kisha, kama vidhibiti vya mawimbi, hupitisha matokeo ya kazi yao kupitia bomba lisilo na jina. Utekelezaji wa msimbo wa JavaScript unahakikishwa kupitia matumizi ya injini ya V8 iliyotengenezwa na Google (kwa kuongeza, Microsoft inatengeneza toleo la Node.js kwa injini ya Chakra-Core).

Kwa msingi wake, Node.js ni sawa na Perl AnyEvent, Ruby Event Machine, mifumo ya Python Twisted na utekelezaji wa matukio katika Tcl, lakini kitanzi cha tukio katika Node.js kimefichwa kutoka kwa msanidi programu na kinafanana na usindikaji wa tukio katika programu ya wavuti. inayoendesha katika kivinjari. Wakati wa kuandika programu za node.js, ni muhimu kuzingatia mahususi ya programu inayoendeshwa na tukio, kwa mfano, badala ya kufanya "var result = db.query("chagua..");" kwa kusubiri kukamilika kwa kazi na usindikaji unaofuata wa matokeo, Node.js hutumia kanuni ya utekelezaji wa asynchronous, i.e. msimbo hubadilishwa kuwa "db.query("chagua..", chaguo la kukokotoa (matokeo) {uchakataji wa matokeo});", ambapo udhibiti utapita mara moja hadi kwenye msimbo zaidi, na matokeo ya hoja yatachakatwa data inapowasili.

Chanzo: opennet.ru

Kuongeza maoni