I april 2022 gavs NodeJS release Node v18 ut. Node v18-uppdateringen har varit en av de mest efterlängtade uppdateringarna sedan Node v14, som lade till asynkront lokalt lagrings-API, ett Web Assembly System Interface (WASI) och stöd för ECMAScript-moduler.

V18-uppgraderingen lägger till olika förbättringar av NodeJS, inklusive ett globalt aktiverat hämtnings-API som standard, webbströms-API-stöd och en kärntestmodul. Här täcker vi de flesta av de betydande förändringarna av NodeJS i v18.

1. Fetch API

Fetch API tillhandahåller ett gränssnitt för åtkomst till och manipulering av HTTP-förfrågningar och svar. Innan NodeJS v18 krävde HTTP-förfrågningar gjorda med NodeJS tredjepartsbibliotek som axios och nodhämtning eller det komplicerade http eller https paket.

NodeJS v18 gör hämta API tillgängligt i det globala omfånget som standard. Det globala hämta API eliminerar behovet av tredjepartsbibliotek som axios och den utförliga koden som är associerad med https paket vid hämtning av resurser asynkront över ett nätverk.

instagram viewer

Här är ett exempel på användningen av API: n:

konst getData = asynkronfungera () {
Prova {
konst res = vänta hämta("https://example.com/users");
konst data = vänta res.json();
trösta.log (data);
} fånga (fel) {
trösta.logga(`Något gick fel, ${error}`);
}
};
hämta data();

De hämta data funktionen ovan skickar en SKAFFA SIG begäran att hämta resurserna från " https://example.com/users". Fetch API tar också en valfri andra parameter, ett optionsobjekt. Alternativobjekten ska innehålla detaljer om begäran. Till exempel:

konst userData = {
namn: "Jon Snow",
ålder: 25,
kön: "M",
};
konst postData = asynkronfungera (data) {
Prova {
konst res = vänta hämta("https://example.com/users", {
metod: "POSTA",
kropp: JSON.stringify (data),
});
konst responseData = vänta res.json();
trösta.logga(
`Förfrågan lyckades, här är detaljerna: ${responseData}`
);
} fånga (fel) {
trösta.logga(`Förfrågan misslyckades. Här är detaljerna: ${error}`);
}
};
postData (användardata);

Även om hämta API är fortfarande experimentell, bör det fungera bra för de flesta användare.

2. Stöd för Web Streams API

Tänk multimedia eller realtidsapplikationer; detta är ett kärnanvändningsfall för web-streams API. Web streams API är en uppsättning gränssnitt som möjliggör programmatisk uppdelning av en stor resurs som tas emot över ett nätverk i små bitar, och sedan bearbetar den bit för bit.

Ett exempel på en ström är svarskroppen som returneras av en framgångsrik hämta begäran. Svarskroppen är av typen ReadableStream.

NodeJS v18 exponerar en experimentell implementering av webstreams API. Med den här uppdateringen är webbströms-API: er nu tillgängliga i både klienten och servern, vilket gör utvecklingen enklare.

Du kan hitta en lista över de strömmar som för närvarande stöds i officiella release notes.

3. Testlöpare-modulen

I tidigare versioner av NodeJS gjordes testning utan tredjepartsbibliotek med den inbyggda hävda bibliotek.

De hävda biblioteket gjorde det enkelt att skriva enkla tester, men det hade betydande begränsningar som gjorde det svårt att arbeta med flera testsviter. Dessa begränsningar främjade behovet av tredjepartsbibliotek som Jest att köra mer avancerade tester.

NodeJS v18 eliminerar behovet av tredjepartsbibliotek med introduktionen av NodeJS egen kärntestrunnermodul. Testlöparen stöder funktioner som deltester, testhoppning, återuppringningstest, etc., ungefär som Jest.

För att använda testlöparen måste du importera hävda från hävda och testa från nod: test. Lägg märke till "nod:" prefix; det är Nodes nya protokoll som skiljer nodkärnpaket från användarskapade paket.

konsthävda = kräver("hävda");
konst testa = behöva("nod: test");

Här är ett exempel på ett enkelt test med testlöparmodulen:

testa("Kontrollera om strängarna är samma", (t) => {
assert.strictEqual("testa", "testa");
});

Testresultaten som visas av testlöparen kommer att visas TAP (Test Anything Protocol) formatera. Observera att den här funktionen fortfarande är experimentell och kan ändras när som helst.

4. Andra uppgraderingar och korrigeringar

Node v18-uppdateringen innehåller också en uppdatering av v8-motorn till version 10.1. v8-motorn är JavaScript-runtime som används av NodeJS för att köra JavaScript.

V8-uppdateringen gör att array-metoderhittaSista och findLastIndex tillgängligt i NodeJS och förbättrar prestandan för klassfält och privata klassmetoder.

NodeJS exponerar också följande API: er på det globala omfånget i Node v18-uppgraderingen:

  • Klick
  • Brodcast Channel

Uppgradering till Node v18

Med Node v18 kan du testa en hel applikation utan externa bibliotek, hämta resurser asynkront utan externa bibliotek och ha webbströmmar aktiverade på din server.

Det är dock värt att notera att dessa funktioner fortfarande är experimentella och kan ändras när som helst. Du kan uppgradera till NodeJS v18 med hjälp av officiell nedladdningslänk.