I april 2022 ble NodeJS-utgivelsen Node v18 utgitt. Node v18-oppdateringen har vært en av de mest etterlengtede oppdateringene siden Node v14, som la til async local storage API, et Web Assembly System Interface (WASI) og støtte for ECMAScript-moduler.

V18-oppgraderingen legger til forskjellige forbedringer til NodeJS, inkludert en globalt aktivert hente-API som standard, webstrøm-API-støtte og en kjernetestløpermodul. Her dekker vi de fleste av de betydelige endringene til NodeJS i v18.

1. Fetch API

Hent API gir et grensesnitt for tilgang til og manipulering av HTTP-forespørsler og svar. Før NodeJS v18 krevde HTTP-forespørsler gjort med NodeJS tredjepartsbiblioteker som aksioer og node-henting eller det kompliserte http eller https pakke.

NodeJS v18 gjør hente-APIet tilgjengelig i det globale omfanget som standard. Det globale appetitt-APIet eliminerer behovet for tredjepartsbiblioteker som aksioer og den detaljerte koden knyttet til https pakke når du henter ressurser asynkront over et nettverk.

Her er et eksempel på bruken av API:

konst getData = asynkronfunksjon () {
prøve {
konst res = avvente hente("https://example.com/users");
konst data = avvente res.json();
konsoll.log (data);
} å fange (feil) {
konsoll.Logg(`Noe gikk galt, ${error}`);
}
};
getData();

De getData funksjonen ovenfor sender en forespørsel om å hente ressursene fra " https://example.com/users". Hent-APIet tar også en valgfri andre parameter, et opsjonsobjekt. Alternativobjektene skal inneholde detaljer om forespørselen. For eksempel:

konst brukerdata = {
Navn: "Jon Snow",
alder: 25,
kjønn: "M",
};
konst postData = asynkronfunksjon (data) {
prøve {
konst res = avvente hente("https://example.com/users", {
metode: "POST",
kropp: JSON.stringify (data),
});
konst responsData = avvente res.json();
konsoll.Logg(
`Forespørselen var vellykket. Her er detaljene: ${responseData}`
);
} å fange (feil) {
konsoll.Logg(`Forespørselen mislyktes. Her er detaljene: ${error}`);
}
};
postData (brukerdata);

Selv om hente-APIet fortsatt er eksperimentell, bør det fungere bra for de fleste brukere.

2. Støtte for Web Streams API

Tenk på multimedia eller sanntidsapplikasjoner; dette er et kjernebruk av web-streams API. Webstreams API er et sett med grensesnitt som muliggjør programmatisk oppdeling av en stor ressurs mottatt over et nettverk i små biter, og deretter behandler den bit for bit.

Et eksempel på en strøm er svarteksten som returneres av en vellykket hente be om. Responskroppen er av typen ReadableStream.

NodeJS v18 avslører en eksperimentell implementering av webstreams API. Med denne oppdateringen er nettstrøm-APIer nå tilgjengelig i både klienten og serveren, noe som gjør utviklingen enklere.

Du kan finne en liste over strømmene som støttes for øyeblikket i offisielle utgivelsesnotater.

3. Testløpermodulen

I tidligere versjoner av NodeJS ble testing uten tredjepartsbiblioteker utført med den innebygde hevde bibliotek.

De hevde biblioteket gjorde det enkelt å skrive enkle tester, men det hadde betydelige begrensninger som gjorde det vanskelig å jobbe med flere testsuiter. Disse begrensningene fremmet behovet for tredjepartsbiblioteker som Jest for å kjøre mer avanserte tester.

NodeJS v18 eliminerer behovet for tredjepartsbiblioteker med introduksjonen av NodeJS sin egen kjernetestløpermodul. Testløperen støtter funksjoner som deltester, testhopping, tilbakeringingstester osv., omtrent som Jest.

For å bruke testløperen må du importere hevde fra hevde og test fra node: test. Legg merke til "node:" prefiks; det er Nodes nye protokoll som skiller nodekjernepakker fra brukerlagde pakker.

konsthevde = krever("hevde");
konst test = krever("node: test");

Her er et eksempel på en enkel test som bruker testløpermodulen:

test("Sjekk om strengene er like", (t) => {
assert.strictEqual("test", "test");
});

Testresultatene som vises av testløperen vil være inne TAP (Test Anything Protocol) format. Vær oppmerksom på at denne funksjonen fortsatt er eksperimentell og kan endres når som helst.

4. Andre oppgraderinger og reparasjoner

Node v18-oppdateringen inneholder også en oppdatering av v8-motoren til versjon 10.1. v8-motoren er JavaScript-kjøretiden som brukes av NodeJS for å kjøre JavaScript.

V8-oppdateringen gjør array metoderfinnSiste og findLastIndex tilgjengelig i NodeJS og forbedrer ytelsen til klassefelt og private klassemetoder.

NodeJS avslører også følgende APIer på det globale omfanget i Node v18-oppgraderingen:

  • Blob
  • Brodcast Channel

Oppgradering til Node v18

Ved å bruke Node v18 kan du teste en hel applikasjon uten eksterne biblioteker, hente ressurser asynkront uten eksterne biblioteker, og ha nettstrømmer aktivert på serveren din.

Det er imidlertid verdt å merke seg at disse funksjonene fortsatt er eksperimentelle og kan endres når som helst. Du kan oppgradere til NodeJS v18 ved å bruke offisiell nedlastingslenke.