I april 2022 blev NodeJS release Node v18 udgivet. Node v18-opdateringen har været en af ​​de mest forventede opdateringer siden Node v14, som tilføjede async local storage API, en Web Assembly System Interface (WASI) og understøttelse af ECMAScript-moduler.

V18-opgraderingen tilføjer forskellige forbedringer til NodeJS, herunder en globalt aktiveret hente-API som standard, webstream-API-understøttelse og et kerne-testløber-modul. Her dækker vi de fleste af de væsentlige ændringer til NodeJS i v18.

1. Fetch API

Hent API'en giver en grænseflade til at få adgang til og manipulere HTTP-anmodninger og -svar. Før NodeJS v18 krævede HTTP-anmodninger lavet med NodeJS tredjepartsbiblioteker som axios og node-hentning eller det komplicerede http eller https pakke.

NodeJS v18 gør hente-API'en tilgængelig i det globale omfang som standard. Den globale hentning API eliminerer behovet for tredjeparts biblioteker som axios og den udførlige kode forbundet med https pakke ved hentning af ressourcer asynkront på tværs af et netværk.

instagram viewer

Her er et eksempel på brugen af ​​API'en:

konst getData = asynkronfungere () {
prøve {
konst res = vente hente("https://example.com/users");
konst data = vente res.json();
konsol.log (data);
} fangst (fejl) {
konsol.log("Noget gik galt, ${error}`);
}
};
getData();

Det getData funktionen ovenfor sender en anmodning om at hente ressourcerne fra " https://example.com/users". Hent API'en tager også en valgfri anden parameter, et optionsobjekt. Indstillingsobjekterne skal indeholde detaljer om anmodningen. For eksempel:

konst brugerdata = {
navn: "Jon Snow",
alder: 25,
køn: "M",
};
konst postData = asynkronfungere (data) {
prøve {
konst res = vente hente("https://example.com/brugere", {
metode: "STOLPE",
legeme: JSON.stringify (data),
});
konst svarData = vente res.json();
konsol.log(
`Forespørgslen lykkedes. Her er detaljerne: ${responseData}`
);
} fangst (fejl) {
konsol.log(`Forespørgslen mislykkedes. Her er detaljerne: ${error}`);
}
};
postData (brugerData);

Selvom hente-API'en stadig er eksperimentel, burde det fungere godt for de fleste brugere.

2. Understøttelse af Web Streams API

Tænk multimedie- eller realtidsapplikationer; dette er et kernebrugstilfælde af web-streams API. Webstreams API er et sæt grænseflader, der muliggør den programmatiske opdeling af en stor ressource modtaget over et netværk i små bidder, og derefter behandler den lidt efter lidt.

Et eksempel på en strøm er den svartekst, der returneres af en vellykket hente anmodning. Svarlegemet er af typen ReadableStream.

NodeJS v18 afslører en eksperimentel implementering af webstreams API. Med denne opdatering er webstream-API'er nu tilgængelige i både klienten og serveren, hvilket gør udviklingen mere ligetil.

Du kan finde en liste over de aktuelt understøttede streams i officielle udgivelsesbemærkninger.

3. Testløbermodulet

I tidligere versioner af NodeJS blev test uden tredjepartsbiblioteker udført med den indbyggede hævde bibliotek.

Det hævde biblioteket gjorde det nemt at skrive simple tests, men det havde betydelige begrænsninger, der gjorde det svært at arbejde med flere testsuiter. Disse begrænsninger fremmede behovet for tredjepartsbiblioteker som Jest til at køre mere avancerede tests.

NodeJS v18 eliminerer behovet for tredjepartsbiblioteker med introduktionen af ​​NodeJS's eget kerne-testløbermodul. Testløberen understøtter funktioner som undertest, testspring, tilbagekaldstest osv., ligesom Jest.

For at bruge testløberen skal du importere hævde fra hævde og prøve fra node: test. Læg mærke til "node:" præfiks; det er Nodes nye protokol, der adskiller node-kernepakker fra brugeroprettede pakker.

konsthævde = kræver("hævde");
konst test = kræve("node: test");

Her er et eksempel på en simpel test, der bruger testløbermodulet:

prøve("Tjek om strengene er de samme", (t) => {
assert.strictEqual("prøve", "prøve");
});

Testresultaterne vist af testløberen vil være inde TAP (Test Anything Protocol) format. Bemærk, at denne funktion stadig er eksperimentel og kan ændres til enhver tid.

4. Andre opgraderinger og rettelser

Node v18-opdateringen indeholder også en opdatering til v8-motoren til version 10.1. v8-motoren er JavaScript-runtime, der bruges af NodeJS til at udføre JavaScript.

v8-opdateringen gør array metoderfindSidste og findLastIndex tilgængelig i NodeJS og forbedrer ydeevnen af ​​klassefelter og private klassemetoder.

NodeJS afslører også følgende API'er på det globale omfang i Node v18-opgraderingen:

  • Blob
  • Brodcast Channel

Opgradering til Node v18

Ved at bruge Node v18 kan du teste en hel applikation uden eksterne biblioteker, hente ressourcer asynkront uden eksterne biblioteker og have webstreams aktiveret på din server.

Det er dog værd at bemærke, at disse funktioner stadig er eksperimentelle og kan ændres når som helst. Du kan opgradere til NodeJS v18 ved hjælp af officielt downloadlink.