W kwietniu 2022 została wydana wersja NodeJS Node v18. Aktualizacja Node v18 była jedną z najbardziej oczekiwanych aktualizacji od wersji Node v14, która dodała asynchroniczny lokalny interfejs pamięci masowej, interfejs systemu montażu sieci Web (WASI) i obsługę modułów ECMAScript.
Aktualizacja v18 dodaje różne ulepszenia do NodeJS, w tym domyślnie globalnie włączony interfejs API pobierania, obsługę interfejsu API strumienia internetowego i podstawowy moduł uruchamiania testów. Tutaj omówimy większość znaczących zmian w NodeJS w wersji 18.
1. Interfejs API pobierania
Interfejs API pobierania zapewnia interfejs umożliwiający dostęp do żądań i odpowiedzi HTTP oraz manipulowanie nimi. Przed NodeJS v18 żądania HTTP wykonane za pomocą NodeJS wymagały bibliotek innych firm, takich jak aksjos oraz pobieranie węzłów lub skomplikowane http lub https pakiet.
NodeJS v18 domyślnie udostępnia interfejs API pobierania w zakresie globalnym. Globalny interfejs API pobierania eliminuje potrzebę korzystania z bibliotek innych firm, takich jak
aksjos i pełny kod związany z https pakiet podczas pobierania zasobów asynchronicznie w sieci.Oto przykład użycia API:
stały pobierzDane = asynchronicznyfunkcjonować () {
próbować {
stały res = czekać na pobierz("https://example.com/users");
stały dane = czekać na res.json();
konsola.log (dane);
} złapać (błąd) {
konsola.dziennik(„Coś poszło nie tak, ${błąd}`);
}
};
otrzymać dane();
The otrzymać dane funkcja powyżej wysyła a DOSTAWAĆ prośba o pobranie zasobów z " https://example.com/users". Fetch API pobiera również opcjonalny drugi parametr, obiekt opcji. Obiekty options powinny zawierać szczegółowe informacje o żądaniu. Na przykład:
stały dane użytkownika = {
Nazwa: "Jon Snow",
wiek: 25 lat,
płeć: "M",
};
stały postData = asynchronicznyfunkcjonować (dane) {
próbować {
stały res = czekać na pobierz("https://example.com/users", {
metoda: "POCZTA",
ciało: JSON.stringify (dane),
});
stały dane odpowiedzi = czekać na res.json();
konsola.dziennik(
`Prośba powiodła się, oto szczegóły: ${dane odpowiedzi}`
);
} złapać (błąd) {
konsola.dziennik(`Żądanie nie powiodło się, oto szczegóły: ${błąd}`);
}
};
postData (dane użytkownika);
Chociaż interfejs API pobierania jest nadal eksperymentalny, powinno działać dobrze dla większości użytkowników.
2. Wsparcie dla Web Streams API
Pomyśl o multimediach lub aplikacjach czasu rzeczywistego; jest to podstawowy przypadek użycia interfejsu API strumieni internetowych. Interfejs API strumieni internetowych to zestaw interfejsów, które umożliwiają programowy podział dużego zasobu odbieranego przez sieć na małe porcje, a następnie przetwarzanie go krok po kroku.
Przykładem strumienia jest treść odpowiedzi zwrócona przez pomyślnie aportować żądanie. Ciało odpowiedzi jest typu Czytelny strumień.
NodeJS v18 udostępnia eksperymentalny implementacja API strumieni internetowych. Dzięki tej aktualizacji interfejsy API strumieni internetowych są teraz dostępne zarówno na kliencie, jak i na serwerze, dzięki czemu programowanie jest prostsze.
Listę aktualnie obsługiwanych strumieni znajdziesz w oficjalne informacje o wydaniu.
3. Moduł biegacza testowego
We wcześniejszych wersjach NodeJS testowanie bez bibliotek innych firm odbywało się za pomocą wbudowanego zapewniać biblioteka.
The zapewniać Biblioteka ułatwiała pisanie prostych testów, ale miała znaczne ograniczenia, które utrudniały pracę z wieloma zestawami testów. Te ograniczenia spowodowały potrzebę korzystania z bibliotek innych firm, takich jak Jest, do przeprowadzania bardziej zaawansowanych testów.
NodeJS v18 eliminuje potrzebę korzystania z bibliotek innych firm dzięki wprowadzeniu własnego podstawowego modułu uruchamiania testów NodeJS. Program uruchamiający testy obsługuje funkcje, takie jak podtesty, pomijanie testów, testy wywołań zwrotnych itp., podobnie jak Jest.
Aby użyć biegacza testowego, musisz zaimportować zapewniać z zapewniać oraz test z węzeł: test. Zwróć uwagę na „węzeł:" prefiks; jest to nowy protokół Node, który odróżnia pakiety rdzenia węzła od pakietów utworzonych przez użytkownika.
stałyzapewniać = wymagaj("zapewniać");
stały test = wymagać(„węzeł: test”);
Oto przykład prostego testu z wykorzystaniem modułu uruchamiania testów:
test("Sprawdź, czy struny są takie same", (t) => {
.strict.strictEqual("test", "test");
});
Wyniki testu wyświetlane przez uczestnika testu będą w TAP (protokół testu wszystkiego) format. Pamiętaj, że ta funkcja jest nadal eksperymentalna i może się zmienić w dowolnym momencie.
4. Inne ulepszenia i poprawki
Aktualizacja Node v18 zawiera również aktualizację silnika v8 do wersji 10.1. Silnik v8 to środowisko wykonawcze JavaScript używane przez NodeJS do wykonywania JavaScript.
Aktualizacja v8 sprawia, że metody tablicoweznajdźOstatni oraz znajdź ostatni indeks dostępny w NodeJS i poprawia wydajność pól klas i metod klas prywatnych.
NodeJS udostępnia również następujące interfejsy API w zakresie globalnym w aktualizacji Node v18:
- Kropelka
- Kanał transmisji
Aktualizacja do Node v18
Używając Node v18, możesz przetestować całą aplikację bez zewnętrznych bibliotek, asynchronicznie pobierać zasoby bez zewnętrznych bibliotek i mieć włączone strumienie sieciowe na swoim serwerze.
Warto jednak zauważyć, że te funkcje są nadal eksperymentalne i mogą się zmienić w dowolnym momencie. Możesz uaktualnić do NodeJS v18 za pomocą oficjalny link do pobrania.