Pieejama servera puses JavaScript platforma Node.js 20.0

Tika izlaists Node.js 20.0 ā€” platforma tÄ«kla lietojumprogrammu palaiÅ”anai JavaScript. Node.js 20.0 ir klasificēts kā ilgtermiņa atbalsta filiāle, taču Å”is statuss tiks pieŔķirts tikai oktobrÄ«, pēc stabilizācijas. Node.js 20.x tiks atbalstÄ«ts lÄ«dz 30. gada 2026. aprÄ«lim. IepriekŔējās Node.js 18.x LTS filiāles apkope ilgs lÄ«dz 2025. gada aprÄ«lim, bet iepriekŔējā LTS fila 16.x ā€“ lÄ«dz 2023. gada septembrim. 14.x LTS filiāle tiks pārtraukta 30. aprÄ«lÄ«, bet Node.js 19.x pakāpeniskā atzara darbÄ«ba tiks pārtraukta 1. jÅ«nijā.

Galvenie uzlabojumi:

  • V8 dzinējs ir atjaunināts uz versiju 11.3, ko izmanto Chromium 113. Izmaiņas, salÄ«dzinot ar Node.js 19 filiāli, kurā tika izmantots Chromium 107 dzinējs, ietver funkcijas String.prototype.isWellFormed un toWellFormed, Array.prototype un TypedArray. prototipa metodes darbam ar kopiju, mainot Array un TypedArray objektus, ā€œvā€ karodziņŔ programmā RegExp, atbalsts ArrayBuffer izmēra maiņai un SharedArrayBuffer lieluma palielināŔanai, astes rekursija (tail-call) WebAssembly.
  • Ir ierosināts eksperimentāls atļauju modeļa mehānisms, kas izpildes laikā ļauj ierobežot piekļuvi noteiktiem resursiem. Atļauju modeļa atbalsts ir iespējots, darbÄ«bas laikā norādot karodziņu ā€œ--experimental-permissionā€. Sākotnējā ievieÅ”ana piedāvā iespējas ierobežot rakstÄ«Å”anas (--allow-fs-write) un lasÄ«Å”anas (--allow-fs-read) piekļuvi noteiktām failu sistēmas daļām, bērnu procesiem (--allow-child-process) un papildinājumi (--no-addons) ) un pavedieni (--allow-worker). Piemēram, lai atļautu rakstÄ«t /tmp direktorijā un lasÄ«t failu /home/index.js, varat norādÄ«t: node ā€”experimental-permission ā€”allow-fs-write=/tmp/ ā€”allow-fs-read=/home /index.js indekss .js

    Lai pārbaudÄ«tu piekļuvi, ieteicams izmantot metodi process.permission.has(), piemēram, ā€œprocess.permission.has('fs.write',"/tmp/test").

  • ECMAScript ārējā moduļa (ESM) apstrādātāji, kas ielādēti, izmantojot opciju "--experimental-loader", tagad darbojas atseviŔķā pavedienā, kas izolēts no galvenā pavediena, novērÅ”ot lietojumprogrammas koda un ielādēto ESM moduļu krustojumu. LÄ«dzÄ«gi kā pārlÅ«kprogrammās, metode import.meta.resolve() tagad tiek izpildÄ«ta sinhroni, kad tā tiek izsaukta no lietojumprogrammas. Vienā no nākamajiem Node.js atzariem atbalstu ESM ielādei plānots pārcelt uz stabilo iespēju kategoriju.
  • Moduļa node:test (test_runner), kas paredzēts tādu JavaScript testu izveidei un palaiÅ”anai, kuri atgriež rezultātus TAP (Test Anything Protocol) formātā, ir padarÄ«ts stabils.
  • Par veiktspējas optimizāciju tika izveidota atseviŔķa izstrādes komanda, kas, sagatavojot jaunu filiāli, strādāja, lai paātrinātu dažādus izpildlaika komponentus, tostarp URL parsÄ“Å”anu, fetch() un EventTarget. Piemēram, EventTarget inicializācijas pieskaitāmās izmaksas ir samazinātas uz pusi, ir ievērojami uzlabota metodes URL.canParse() veiktspēja un uzlabota taimeru efektivitāte. Tas ietver arÄ« augstas veiktspējas URL parsētāja Ada 2.0 izlaiÅ”anu, kas rakstÄ«ts C++ valodā.
  • Turpinājās eksperimentālās iespējas izstrāde lietojumprogrammu piegādei viena izpildāmā faila formā (SEA, Single Executable Applications). Lai izveidotu izpildāmo failu, tagad ir jāaizstāj blob, kas Ä£enerēts no konfigurācijas faila JSON formātā (nevis jāaizstāj JavaScript fails).
  • Uzlabota Web Crypto API savietojamÄ«ba ar ievieÅ”anu no citiem projektiem.
  • Pievienots oficiālais Windows atbalsts ARM64 sistēmās.
  • Turpinājās WASI (WebAssembly System Interface) paplaÅ”inājumu atbalsta ievieÅ”ana atseviŔķu WebAssembly lietojumprogrammu izveidei. Noņemta nepiecieÅ”amÄ«ba norādÄ«t Ä«paÅ”u komandrindas karogu, lai iespējotu WASI atbalstu.

Node.js platformu var izmantot gan servera puses Web lietojumprogrammu atbalstam, gan parastu klientu un serveru tÄ«kla programmu izveidei. Lai paplaÅ”inātu Node.js aplikāciju funkcionalitāti, ir sagatavota liela moduļu kolekcija, kurā var atrast moduļus ar HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 serveru un klientu ievieÅ”anu, moduļus integrācijai ar dažādiem tÄ«mekļa ietvariem, WebSocket un Ajax apstrādātājiem, savienotājiem ar DBVS (MySQL, PostgreSQL, SQLite, MongoDB), veidņu dzinējiem, CSS dzinējiem, kriptogrāfijas algoritmu un autorizācijas sistēmu (OAuth) implementācijām, XML parsētājiem.

Lai nodroÅ”inātu liela skaita paralēlu pieprasÄ«jumu apstrādi, Node.js izmanto asinhronā koda izpildes modeli, kura pamatā ir notikumu nebloķējoÅ”a apstrāde un atzvanÄ«Å”anas apstrādātāju definÄ«cija. AtbalstÄ«tās savienojumu multipleksÄ“Å”anas metodes ir epoll, kqueue, /dev/poll un select. Savienojuma multipleksÄ“Å”anai tiek izmantota libuv bibliotēka, kas ir libev papildinājums Unix sistēmās un IOCP operētājsistēmā Windows. Libeio bibliotēka tiek izmantota, lai izveidotu pavedienu pÅ«lu, un c-ares ir integrēta, lai veiktu DNS vaicājumus nebloķējoŔā režīmā. Visi sistēmas izsaukumi, kas izraisa bloÄ·Ä“Å”anu, tiek izpildÄ«ti pavedienu pÅ«lā un pēc tam, tāpat kā signālu apstrādātāji, pārsÅ«ta sava darba rezultātu atpakaļ caur nenosauktu cauruli (cauruli). JavaScript koda izpilde tiek nodroÅ”ināta, izmantojot Google izstrādāto V8 dzinēju (turklāt Microsoft izstrādā Node.js versiju ar Chakra-Core dzinēju).

Savā pamatā Node.js ir lÄ«dzÄ«gs Perl AnyEvent, Ruby Event Machine, Python Twisted ietvariem un Tcl notikumu ievieÅ”anai, taču notikuma cilpa programmā Node.js ir paslēpta no izstrādātāja un atgādina notikumu apstrādi tÄ«mekļa lietojumprogrammā, kas darbojas. pārlÅ«kprogrammā. Rakstot lietojumprogrammas node.js, ir jāņem vērā, piemēram, notikumu vadÄ«tas programmÄ“Å”anas specifika, nevis jādara "var rezultāts = db.query("select..");" ar darba pabeigÅ”anas gaidÄ«Å”anu un sekojoÅ”u rezultātu apstrādi Node.js izmanto asinhronās izpildes principu, t.i. kods tiek pārveidots par "db.query("select..", funkcija (rezultāts) {rezultāta apstrāde});", kurā vadÄ«ba uzreiz pāries tālākam kodam, un vaicājuma rezultāts tiks apstrādāts lÄ«dz ar datu saņemÅ”anu.

Avots: opennet.ru

Pievieno komentāru