U travnju 2022. izdano je NodeJS izdanje Node v18. Ažuriranje Node v18 jedno je od najiščekivanijih ažuriranja od Node v14, koje je dodalo asinkroni API za lokalnu pohranu, Web Assembly System Interface (WASI) i podršku za ECMAScript module.

Nadogradnja v18 dodaje razna poboljšanja NodeJS-u, uključujući globalno omogućen API za dohvaćanje prema zadanim postavkama, podršku za API za web stream i osnovni modul za pokretanje testa. Ovdje pokrivamo većinu značajnih promjena u NodeJS-u u v18.

1. API za dohvaćanje

API za dohvaćanje pruža sučelje za pristup i manipulaciju HTTP zahtjevima i odgovorima. Prije NodeJS v18, HTTP zahtjevi napravljeni s NodeJS-om zahtijevali su biblioteke trećih strana kao što su axios i dohvaćanje čvora ili komplicirano http ili https paket.

NodeJS v18 čini API za dohvaćanje dostupnim u globalnom opsegu prema zadanim postavkama. Globalni API za dohvaćanje eliminira potrebu za bibliotekama trećih strana kao što su axios i opširni kod povezan s https paket prilikom dohvaćanja resursa asinkrono preko mreže.

instagram viewer

Evo primjera upotrebe API-ja:

konst getData = asinkfunkcija () {
probati {
konst res = čekati dohvati("https://example.com/users");
konst podaci = čekati res.json();
konzola.log (podaci);
} ulov (pogreška) {
konzola.log(`Nešto je pošlo po zlu, ${error}`);
}
};
getData();

The getData funkcija iznad šalje a DOBITI zahtjev za preuzimanje resursa iz " https://example.com/users". API za dohvaćanje također uzima neobavezni drugi parametar, objekt opcija. Objekti opcija trebaju sadržavati pojedinosti o zahtjevu. Na primjer:

konst korisnički podaci = {
Ime: "Jon Snow",
dob: 25,
spol: "M",
};
konst postData = asinkfunkcija (podaci) {
probati {
konst res = čekati dohvati("https://example.com/users", {
metoda: "POST",
tijelo: JSON.stringify (podaci),
});
konst responseData = čekati res.json();
konzola.log(
`Zahtjev je bio uspješan, evo detalja: ${responseData}`
);
} ulov (pogreška) {
konzola.log(`Zahtjev je bio neuspješan, evo detalja: ${error}`);
}
};
postData (korisnički podaci);

Iako je API za dohvaćanje još uvijek eksperimentalni, trebao bi dobro funkcionirati za većinu korisnika.

2. Podrška za Web Streams API

Razmislite o multimedijskim aplikacijama ili aplikacijama u stvarnom vremenu; ovo je osnovni slučaj upotrebe API-ja za web-streamove. API za web streamove skup je sučelja koja omogućavaju programsku raščlambu velikog resursa primljenog putem mreže u male dijelove, a zatim ga obrađuju malo po malo.

Primjer toka je tijelo odgovora koje je vratio uspješan dohvatiti zahtjev. Tijelo odgovora je tipa ReadableStream.

NodeJS v18 izlaže an eksperimentalni implementacija API-ja za web streamove. S ovim ažuriranjem API-ji za web stream sada su dostupni i na klijentu i na poslužitelju, što razvoj čini jednostavnijim.

Popis trenutno podržanih streamova možete pronaći u službene bilješke o izdanju.

3. Modul Test Runner

U ranijim verzijama NodeJS-a, testiranje bez knjižnica trećih strana obavljalo se s ugrađenim tvrditi knjižnica.

The tvrditi knjižnica je olakšala pisanje jednostavnih testova, ali je imala značajna ograničenja koja su otežavala rad s više testnih paketa. Ova ograničenja potaknula su potrebu da biblioteke trećih strana kao što je Jest izvode naprednije testove.

NodeJS v18 eliminira potrebu za knjižnicama trećih strana uvođenjem NodeJS-ovog vlastitog temeljnog testnog modula. Pogon za testiranje podržava značajke kao što su podtestovi, preskakanje testova, testovi povratnog poziva itd., slično kao Jest.

Da biste koristili probni pokretač, morate uvesti tvrditi iz tvrditi i test iz čvor: test. Obratite pažnju na "čvor:" prefiks; to je Nodeov novi protokol koji razlikuje pakete jezgre čvora od paketa koje je kreirao korisnik.

konsttvrditi = zahtijevati("tvrditi");
konst test = zahtijevati("čvor: test");

Evo primjera jednostavnog testa pomoću modula test runner:

test("Provjerite jesu li nizovi isti", (t) => {
assert.strictEqual("test", "test");
});

Rezultati testa koje je prikazao ispitanik bit će u TAP (Test Anything Protocol) format. Imajte na umu da je ova značajka još uvijek eksperimentalna i da se može promijeniti u bilo kojem trenutku.

4. Ostale nadogradnje i popravci

Node v18 ažuriranje također sadrži ažuriranje v8 motora na verziju 10.1. Motor v8 je vrijeme izvođenja JavaScripta koje NodeJS koristi za izvršavanje JavaScripta.

Ažuriranje v8 čini metode nizafindLast i findLastIndex dostupno u NodeJS-u i poboljšava performanse polja klase i metoda privatne klase.

NodeJS također izlaže sljedeće API-je u globalnom opsegu u nadogradnji Node v18:

  • Blob
  • BrodcastChannel

Nadogradnja na Node v18

Koristeći Node v18, možete testirati cijelu aplikaciju bez vanjskih knjižnica, asinkrono dohvaćati resurse bez vanjskih knjižnica i imati omogućene web streamove na vašem poslužitelju.

Međutim, vrijedno je napomenuti da su ove značajke još uvijek eksperimentalne i da se mogu promijeniti u bilo kojem trenutku. Možete nadograditi na NodeJS v18 pomoću službeni link za preuzimanje.