În aprilie 2022, a fost lansată versiunea NodeJS Node v18. Actualizarea Node v18 a fost una dintre cele mai așteptate actualizări de la Node v14, care a adăugat API de stocare locală asincronă, o interfață Web Assembly System (WASI) și suport pentru modulele ECMAScript.
Actualizarea v18 adaugă diverse îmbunătățiri la NodeJS, inclusiv un API de preluare activat la nivel global în mod implicit, suport pentru API-ul de flux web și un modul de testare principal. Aici acoperim majoritatea modificărilor semnificative aduse NodeJS în v18.
1. API-ul Fetch
API-ul fetch oferă o interfață pentru accesarea și manipularea cererilor și răspunsurilor HTTP. Înainte de NodeJS v18, cererile HTTP făcute cu NodeJS necesitau biblioteci terță parte, cum ar fi axios și nod-fetch sau cele complicate http sau https pachet.
NodeJS v18 face ca API-ul de preluare să fie disponibil în mod implicit în domeniul global. API-ul de preluare globală elimină nevoia de biblioteci terță parte, cum ar fi axios și codul verboz asociat cu https pachet la preluarea resurselor asincron într-o rețea.
Iată un exemplu de utilizare a API-ului:
const getData = asincronfuncţie () {
încerca {
const res = așteaptă prelua ("https://example.com/users");
const date = așteaptă res.json();
consolă.log (date);
} captură (eroare) {
consolă.Buturuga(„Ceva a mers prost, ${error}`);
}
};
Obțineți date();
The Obțineți date funcția de mai sus trimite a OBȚINE solicitarea de a prelua resursele de la " https://example.com/users". API-ul fetch preia și un al doilea parametru opțional, un obiect opțiuni. Obiectele opțiuni ar trebui să conțină detalii despre cerere. De exemplu:
const userData = {
Nume: "Jon Snow",
varsta: 25,
gen: "M",
};
const postData = asincronfuncţie (date) {
încerca {
const res = așteaptă prelua ("https://example.com/users", {
metodă: "POST",
corp: JSON.stringify (date),
});
const responseData = așteaptă res.json();
consolă.Buturuga(
`Solicitarea a avut succes, Iată detaliile: ${responseData}`
);
} captură (eroare) {
consolă.Buturuga(`Solicitarea a fost nereușită, Iată detaliile: ${error}`);
}
};
postData (userData);
Deși API-ul de preluare este încă experimental, ar trebui să funcționeze bine pentru majoritatea utilizatorilor.
2. Suport pentru API-ul Web Streams
Gândiți-vă la aplicații multimedia sau în timp real; acesta este un caz de utilizare de bază al API-ului web-streams. API-ul pentru fluxuri web este un set de interfețe care permit defalcarea programatică a unei resurse mari primite printr-o rețea în bucăți mici, apoi o procesează bit cu bit.
Un exemplu de flux este corpul răspunsului returnat de un stream de succes aduce cerere. Corpul de răspuns este de tipul ReadableStream.
NodeJS v18 expune un experimental implementarea API-ului web streams. Cu această actualizare, API-urile de flux web sunt acum disponibile atât pe client, cât și pe server, ceea ce face dezvoltarea mai simplă.
Puteți găsi o listă a fluxurilor acceptate în prezent în note oficiale de lansare.
3. Modulul Test Runner
În versiunile anterioare ale NodeJS, testarea fără biblioteci terță parte a fost făcută cu sistemul încorporat. afirma bibliotecă.
The afirma biblioteca a facilitat scrierea de teste simple, dar a avut limitări semnificative care au făcut dificilă lucrarea cu mai multe suite de teste. Aceste limitări au stimulat nevoia bibliotecilor terțe, precum Jest, de a rula teste mai avansate.
NodeJS v18 elimină nevoia de biblioteci terță parte prin introducerea propriului modul de rulare de testare de bază al NodeJS. Runnerul de testare acceptă funcții precum subtestări, omitere a testelor, teste de apel invers etc., la fel ca Jest.
Pentru a utiliza rulerul de testare, trebuie să importați afirma din afirma și Test din nod: test. Observați „nodul:" prefix; este noul protocol Node care distinge pachetele de bază ale nodului de pachetele create de utilizator.
constafirma = cere("afirma");
const test = cere(„nod: test”);
Iată un exemplu de test simplu folosind modulul test runner:
Test("Verificați dacă șirurile sunt aceleași", (t) => {
assert.strictEqual("Test", "Test");
});
Rezultatele testului afișate de alergătorul de testare vor fi afișate Atingeți (Test Anything Protocol) format. Rețineți că această funcție este încă experimentală și se poate schimba oricând.
4. Alte upgrade-uri și remedieri
Actualizarea Node v18 include și o actualizare a motorului v8 la versiunea 10.1. Motorul v8 este timpul de execuție JavaScript folosit de NodeJS pentru a executa JavaScript.
Actualizarea v8 face ca metode matricegăsiUltimul și findLastIndex disponibil în NodeJS și îmbunătățește performanța câmpurilor de clasă și a metodelor de clasă privată.
NodeJS expune, de asemenea, următoarele API-uri pe domeniul global în actualizarea Node v18:
- blob
- BdcastChannel
Actualizarea la Node v18
Folosind Node v18, puteți testa o întreagă aplicație fără biblioteci externe, puteți prelua resurse în mod asincron fără biblioteci externe și puteți avea fluxuri web activate pe serverul dvs.
Cu toate acestea, merită remarcat faptul că aceste caracteristici sunt încă experimentale și se pot schimba oricând. Puteți face upgrade la NodeJS v18 folosind link de descărcare oficial.