2022 m. balandžio mėn. buvo išleistas NodeJS leidimas Node v18. „Node v18“ naujinimas buvo vienas laukiamiausių naujinimų nuo 14 versijos mazgo, kuriame buvo pridėta asinchroninės vietinės saugyklos API, žiniatinklio surinkimo sistemos sąsaja (WASI) ir ECMAScript modulių palaikymas.

18 versijos naujinimas prideda įvairių NodeJS patobulinimų, įskaitant visuotinai įgalintą gavimo API pagal numatytuosius nustatymus, žiniatinklio srauto API palaikymą ir pagrindinį testavimo programos modulį. Čia aptariame daugumą reikšmingų „NodeJS“ pakeitimų 18 versijoje.

1. „Fetch“ API

„Ftch API“ suteikia sąsają, leidžiančią pasiekti ir valdyti HTTP užklausas bei atsakymus. Prieš NodeJS v18 HTTP užklausoms, pateiktoms naudojant NodeJS, reikėjo trečiųjų šalių bibliotekų, pvz aksios ir mazgo gavimas arba sudėtingas http arba https paketą.

„NodeJS v18“ pagal numatytuosius nustatymus suteikia gavimo API pasiekiamą visuotinėje srityje. Global Fetch API pašalina trečiųjų šalių bibliotekų poreikį, pvz aksios ir išsamus kodas, susietas su https paketą, kai gaunami ištekliai asinchroniškai visame tinkle.

instagram viewer

Štai API naudojimo pavyzdys:

konst getData = asyncfunkcija () {
bandyti {
konst res = laukti fetch("https://example.com/users");
konst duomenys = laukti res.json();
konsolė.log (duomenys);
} sugauti (klaida) {
konsolė.log(`Kažkas ne taip, ${error}`);
}
};
getData ();

The getData aukščiau nurodyta funkcija siunčia a GAUTI prašymas gauti išteklius iš " https://example.com/users". Iškviesti API taip pat pasirenkamas antrasis parametras – parinkčių objektas. Parinkčių objektuose turi būti išsami informacija apie užklausą. Pavyzdžiui:

konst userData = {
vardas: "Jonas Snow",
amžius: 25,
Lytis: "M",
};
konst postData = asyncfunkcija (duomenis) {
bandyti {
konst res = laukti fetch("https://example.com/users", {
metodas: "PAST",
kūnas: JSON.stringify (duomenys),
});
konst atsakymo duomenys = laukti res.json();
konsolė.log(
„Užklausa buvo patenkinta. Štai išsami informacija: ${responseData}`
);
} sugauti (klaida) {
konsolė.log(„Užklausa buvo nesėkminga. Štai išsami informacija: ${error}`);
}
};
postData (userData);

Nors gavimo API vis dar yra eksperimentinis, jis turėtų gerai veikti daugumai vartotojų.

2. Web Streams API palaikymas

Pagalvokite apie daugialypės terpės arba realaus laiko programas; tai yra pagrindinis žiniatinklio srautų API naudojimo atvejis. Žiniatinklio srautų API yra sąsajų rinkinys, leidžiantis programiškai suskaidyti didelius išteklius, gautus per tinklą, į mažus gabalus ir po truputį juos apdoroti.

Srauto pavyzdys yra sėkmingo atsakymo tekstas atnešti prašymas. Atsakymo turinys yra tokio tipo ReadableStream.

NodeJS v18 atskleidžia eksperimentinis žiniatinklio srautų API diegimas. Su šiuo atnaujinimu žiniatinklio srauto API dabar pasiekiamos ir kliente, ir serveryje, todėl plėtra tampa paprastesnė.

Šiuo metu palaikomų srautų sąrašą galite rasti oficialios išleidimo pastabos.

3. Bandomojo bėgiko modulis

Ankstesnėse „NodeJS“ versijose testavimas be trečiųjų šalių bibliotekų buvo atliktas naudojant integruotą tvirtinti biblioteka.

The tvirtinti bibliotekoje buvo lengva rašyti paprastus testus, tačiau ji turėjo didelių apribojimų, dėl kurių buvo sunku dirbti su keliais testų rinkiniais. Šie apribojimai paskatino trečiųjų šalių bibliotekų, tokių kaip „Jest“, poreikį atlikti sudėtingesnius testus.

„NodeJS v18“ pašalina trečiųjų šalių bibliotekų poreikį, nes įdiegtas „NodeJS“ pagrindinis testavimo programos modulis. Bandymo vykdytojas palaiko tokias funkcijas kaip antriniai testai, bandymo praleidimas, atgalinio skambinimo testai ir kt., panašiai kaip „Jest“.

Norėdami naudoti bandomąją programą, turite importuoti tvirtintitvirtinti ir bandymasmazgas: testas. Atkreipkite dėmesį į "mazgas:" priešdėlis; tai naujasis Node protokolas, išskiriantis mazgo pagrindinius paketus nuo vartotojo sukurtų paketų.

konsttvirtinti = reikalauti ("tvirtinti");
konst testas = reikalauti(„mazgas: testas“);

Štai paprasto testo, naudojant bandomojo bėgiko modulį, pavyzdys:

testas ("Patikrinkite, ar eilutės yra vienodos", (t) => {
assert.strictEqual("bandymas", "bandymas");
});

Bus įtraukti bandomojo bėgiko rodomi testo rezultatai TAP (Test Anything Protocol) formatu. Atminkite, kad ši funkcija vis dar yra eksperimentinė ir gali bet kada pasikeisti.

4. Kiti atnaujinimai ir pataisymai

„Node v18“ naujinys taip pat turi v8 variklio atnaujinimą iki 10.1 versijos. V8 variklis yra „JavaScript“ vykdymo laikas, kurį „NodeJS“ naudoja „JavaScript“ vykdymui.

V8 atnaujinimas leidžia masyvo metodairasti Paskutinį ir rasti Paskutinį indeksą prieinama NodeJS ir pagerina klasės laukų bei privačių klasių metodų našumą.

„NodeJS“ taip pat atskleidžia šias API visuotinėje apimtyje „Node v18“ naujinimo metu:

  • Blob
  • BrodcastChannel

Naujovinimas į Node v18

Naudodami Node v18 galite išbandyti visą programą be išorinių bibliotekų, asinchroniškai gauti išteklius be išorinių bibliotekų ir įgalinti žiniatinklio srautus savo serveryje.

Tačiau verta paminėti, kad šios funkcijos vis dar yra eksperimentinės ir gali bet kada keistis. Galite atnaujinti į NodeJS v18 naudodami oficiali atsisiuntimo nuoroda.