Zerbitzariaren aldeko JavaScript plataforma Node.js 21.0 eskuragarri

Node.js 21.0 kaleratu zen, JavaScript-en sareko aplikazioak exekutatzeko plataforma. Node.js 21.0 adarra 6 hilabetez onartzen da. Datozen egunetan, Node.js 20 adarraren egonkortzea amaituko da, LTS egoera jasoko duena eta 2026ko apirilera arte onartzen duena. Node.js 18.0-ren aurreko LTS adarraren mantentze-lanak 2025eko irailera arte iraungo du, eta azken LTS adar 16.0 aurreko urtean 2024ko apirilera arte.

Hobekuntza nagusiak:

  • Fetch API egonkortzat jo da, baliabideak sarean kargatzeko eta zerbitzariaren eta bezeroen alde lan egiteko egokia den JavaScript kode unibertsalaren idazketa errazteko diseinatua. Inplementazioa HTTP/1.1 undici bezeroaren kodean oinarritzen da eta arakatzaileek emandako antzeko APItik ahalik eta hurbilen dago. APIak fetch() metodoa eta Headers objektuak ditu. Eskaera eta erantzuna, HTTP goiburuak, eskaera eta erantzuna irudikatuz. const res = itxaron fetch('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = await res.json (); console.log(datuak); }
  • WebStreams APIrako euskarria, sarean jasotako datu-korronteetarako sarbidea ematen duena, egonkortu da. APIak datuekin lan egiten duten kudeatzaileak gehitzea ahalbidetzen du sarera informazioa iristen den heinean, fitxategi osoa deskargatu arte itxaron gabe. Node.js-en eskuragarri dauden objektuen artean daude ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream eta DecompressionStream.
  • WebSocket bezeroaren inplementazio esperimentala gehitu da, nabigatzaileekin bateragarria. WebSocket euskarria gaitzeko, "--experimental-websocket" marka ematen da.
  • Modu esperimental bat gehitu da JavaScript moduluen inplementazio lehenetsia erabiltzeko ESM (ECMAScript Modules, arakatzaileentzako moduluetan erabiltzen dena) CommonJS (Node.js-en berariazkoa) ordez. Aldaketak ez die eragiten package.json-eko "mota" eremuaren bidez esplizituki definitutako formatua duten moduluei, "--input-type" banderaren bidez zehaztuta, edo agerikoa den fitxategi-luzapenaren ondorioz (.mjs ESMrako, .cjs). CommonJSrako). Hala ere, CommonJS gisa esplizituki definituta ez dauden moduluak (adibidez, ".js" luzapena dutenak) ESM modulu gisa tratatuko dira modu berria gaituta dagoenean. Moduluaren ezarpen berriak aktibatzeko, "--experimental-default-type" bandera proposatu da.
  • V8 motorra 11.8 bertsiora eguneratu da, Chromium 118-n erabiltzen dena, gaur egun ArrayBuffer.prototype.transfer metodoa, arrayak taldekatzeko gaitasuna (groupBy metodoa) eta WebAssembly argibideak konstanteak prozesatzeko (i32.add, i32.sub, i32.mul, i64 .add, i64.sub eta i64.mul).
  • GlobalPreload kudeatzaileari euskarria eten egin da, moduluak konfiguratzeko deiak erregistratzearen eta hasieratzearen alde.
  • Fs.writeFile funtzioari "hustu" aukera gehitu zaio idazketa-eragiketa bakoitzaren ondoren datuak unitatean garbitzera behartzeko.
  • URL analizatzearekin, eskuratze-APIarekin, korronteekin, nodo:fs eta HTTPrekin erlazionatutako kodearen errendimendua hobetu da.
  • Nabigatzaile globalaren objektua gehitu da. Adibidez, CPU nukleo kopuruari buruzko datuak lortzeko, navigator.hardwareConcurrency propietatea erabil dezakezu.
  • β€œβ€”test” parametroan, exekutatzeko probak hautatzeko glob maskarentzako euskarria gehitu da (adibidez, β€œβ€”test **/*.test.js.” zehaztu dezakezu).
  • Pakete-kudeatzailea npm 10.2.0 eta llhttp 9.1.2 analizatzailea eguneratu dira.
  • Visual Studio 2019rako laguntza eta 11.0 baino zaharragoak diren macOSen bertsioak eten egin dira.

Node.js plataforma web aplikazioen zerbitzariaren mantentze-lanetarako eta bezero eta zerbitzarien sareko programa arruntak sortzeko erabil daiteke. 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, DBMS konektoreekin (MySQL, PostgreSQL, SQLite, MongoDB), txantiloi-motorrekin, CSS motorrekin, kripto-algoritmoen 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