Co nowego w Node.js 21: odkryj najnowsze funkcje i aktualizacje

Opublikowany: 2024-03-26

Dzięki ogromnemu ekosystemowi pakietów, silnemu wsparciu społeczności i kompatybilności między platformami Node.js jest używany przez od 1,4% do 2,22% witryn internetowych na całym świecie. Dane te dotyczą około 30 milionów stron internetowych [i] .

Od ponad dekady Node.js jest kluczowym graczem w tworzeniu stron internetowych, zapewniając ujednolicony język JavaScript zarówno dla skryptów po stronie serwera, jak i po stronie klienta. Jego asynchroniczny, nieblokujący model we/wy zapewnia wysoką wydajność i efektywność, dzięki czemu idealnie nadaje się do obsługi jednoczesnych połączeń.

Dodatkowo Node.js wykorzystuje środowisko wykonawcze JavaScript V8, co zapewnia szybkie wykonanie. Dzięki skalowalności, Node.js doskonale nadaje się do aplikacji czasu rzeczywistego i architektur mikrousług. Wszystkie te funkcje sprawiają, że jest to doskonały wybór dla programistów chcących tworzyć skalowalne, wydajne i nowoczesne aplikacje internetowe.

Jednak 17 października 2023 r. została wydana jego najnowsza wersja Node.js 21 z różnymi wewnętrznymi ulepszeniami i kilkoma nowymi funkcjami skierowanymi do użytkownika. W tej aktualizacji priorytetem było zwiększenie wydajności poprzez zoptymalizowane wykonanie w czasie wykonywania i zmniejszone obciążenie pamięci. Dodatkowo wprowadzono ulepszoną obsługę modułów ECMAScript i bezproblemową integrację z najnowszymi technologiami sieciowymi.

W tym poście na blogu dodamy dodatkowy kontekst dotyczący najważniejszych ulepszeń i aktualizacji funkcji w Node.js 21.

Zanurzmy się!

9 najważniejszych cech najnowszej wersji Node.js 21

Co nowego w Node.js 21: odkryj najnowsze funkcje i aktualizacje

1. Aktualizacje silnika JavaScript V8

Znaczącym usprawnieniem w Node.js 21 jest aktualizacja silnika V8 do wersji 11.8. Ta aktualizacja nie tylko poprawia wydajność, ale także wprowadza kilka godnych uwagi funkcji JavaScript.

Godnym uwagi dodatkiem jest wprowadzenie grupowania tablic, umożliwiającego konsolidację podobnych danych w grupy za pomocą metod takich jakObject.groupBy()iMap.groupBy(). Dodatkowo wprowadzono nowe programistyczne APIArrayBuffer.prototype.transfer, które ma ułatwić przenoszenie własności ArrayBuffers. To wydanie optymalizuje również realokację i uwzględnia konwersję buforów ArrayBuffer o zmiennym rozmiarze na bufory o stałej długości.

Co więcej, aktualizacja rozszerza obsługę WebAssembly o włączenie rozszerzonych wyrażeń const, rozszerzając możliwości Node.js w zakresie wykorzystania najnowszych osiągnięć technologii internetowych i funkcjonalności JavaScript.

2. Stabilne pobieranie i strumienie internetowe

Node.js 21 stabilizuje interfejsy API pobierania i WebStreams, przekształcając je ze statusu eksperymentalnego w stabilne i gotowe do użycia w środowisku produkcyjnym. Jeśli korzystałeś z tych interfejsów API we wcześniejszych wersjach, możesz teraz z łatwością włączyć je do swoich procesów produkcyjnych.

Interfejsy API fetch i WebStreams zapewniają nowoczesne i spójne podejście do interakcji z zasobami i strumieniami HTTP w środowisku Node.js, zgodnie z ustalonymi standardami sieciowymi. Ta stabilizacja gwarantuje, że programiści wdrażają te funkcje w niezawodny i ustandaryzowany sposób, aby obsługiwać asynchroniczne pobieranie i przesyłanie strumieniowe danych w swoich aplikacjach Node.js.

3. Wprowadzenie nowej flagi eksperymentalnej dla modułów

W wersji Node.js 21 godnym uwagi dodatkiem jest wprowadzenie flagi–experimental-default-type, zaprojektowanej w celu zapewnienia programistom większej kontroli nad domyślnym zachowaniem plików wejściowych, które nie są wyraźnie oznaczone jako moduły ES lub CommonJS.

W przypadku braku tej funkcji flagi, takie dane wejściowe były konwencjonalnie interpretowane jako CommonJS. Wraz z wprowadzeniem–experimental-default-type=moduleprogramiści mają teraz możliwość aktywowania kompleksowej implementacji modułu ES w określonych scenariuszach. Obejmuje to przypadki, gdy ciąg wejściowy jest dostarczany przez –eval lub STDIN, szczególnie jeśli–input-typenie został określony.

Dodatkowo, gdy mamy do czynienia z plikami kończącymi się na .js lub tymi, które nie mają rozszerzenia, flaga wchodzi w grę, gdy nie ma powiązanego pliku package.json lub najbliższe pole nadrzędne package.json nie zawiera pola „typ” (z wyjątkiem katalogu node_modules ). To ulepszenie zapewnia programistom elastyczność w zakresie eksperymentowania i szerszego wdrażania modułów ES, zapewniając dopracowane i dostosowywalne podejście do obsługi modułów.

4. Wbudowany klient Websocket

W Node.js 21 kolejnym godnym uwagi ulepszeniem funkcji jest wbudowany klient WebSocket, będący eksperymentalną implementacją WebSocket zgodną z przeglądarką. Ta funkcja umożliwia programistom płynną interakcję z serwerami WebSocket w aplikacjach Node.js. Aby włączyć tę funkcjonalność, programiści mogą wykorzystaćflagę –experimental-websocket.

Należy jednak zauważyć, że jako funkcja eksperymentalna implementacja może podlegać potencjalnym zmianom w przyszłych wersjach, ponieważ podlega udoskonalaniu i stabilizacji w oparciu o opinie użytkowników i zmieniające się standardy. Wprowadzenie wbudowanego klienta WebSocket upraszcza integrację komunikacji WebSocket z aplikacjami Node.js. Zapewnia to programistom wygodny i ustandaryzowany sposób nawiązywania połączeń WebSocket i zarządzania nimi, przy jednoczesnym uwzględnieniu zmieniającego się charakteru tej funkcji w fazie eksperymentalnej.

5. Runner testowy Node.js obsługuje teraz globy

Najnowsza aktualizacja Node.js 21 wprowadza obsługę globów w programie testowym. To ulepszenie umożliwia programistom wykorzystanie wyrażeń glob podczas określania parametru –test, zapewniając wydajniejszy i elastyczny sposób uruchamiania testów. Dzięki tej funkcji programiści mogą stosować wszechstronne wzorce globalne w celu wydajniejszego wykonywania testów. Na przykład, używając polecenia takiego jaknode –test **/*.test.js, programiści mogą wygodnie uruchamiać testy wszystkich plików z rozszerzeniem.test.jsw wielu katalogach. Ta funkcja usprawnia proces uruchamiania testów, zapewniając lepsze możliwości adaptacji i łatwość obsługi programistom pracującym nad projektami o zróżnicowanych strukturach plików i konfiguracjach testowych.

6. Dodaj opcję Flush do funkcji Fs.writefile().

W Node.js 21 godnym uwagi ulepszeniem jest dodanie opcji „flush” do funkcji fs.writeFile. To ulepszenie dotyczy scenariusza, w którym dane zapisane w plikach mogą nie zostać natychmiast przeniesione do pamięci trwałej, co może prowadzić do późniejszych operacji odczytu powodujących odzyskanie nieaktualnych danych.

Nowa opcja „flush” wprowadzona w tym żądaniu ściągnięcia (PR) zapewnia programistom większą kontrolę nad zachowaniem opróżniania. Po włączeniu tej opcji dane są wymuszone opróżniane do pamięci trwałej po pomyślnej operacji zapisu. Ta funkcja jest szczególnie przydatna w sytuacjach, gdy kluczowa jest natychmiastowa spójność danych, zapobiegając występowaniu nieaktualnych danych i zapewniając programistom bardziej niezawodny i przewidywalny mechanizm zapisywania plików w aplikacjach Node.js.

7. Usunięcie haka dostosowywania modułu „globalPreload”

W Node.js 21 programiści mogą usunąć hak dostosowywania modułu „globalPreload”. Zamiast tego zachęca się programistów do korzystania z metody „rejestru” do wysyłania danych z wątku aplikacji do punktów dostosowywania oraz metody „inicjowania” w celu ustanowienia kanału komunikacji między wątkami. To dostosowanie zapewnia bardziej uporządkowane i wyraźne podejście do dostosowywania modułów, inicjując wyraźniejszy podział obowiązków.

Metoda „rejestru” ułatwia przesyłanie danych do haków dostosowywania, podczas gdy hak „inicjowania” odgrywa rolę w konfigurowaniu kanałów komunikacyjnych między wątkami. Ten udoskonalony mechanizm zwiększa ogólną modułowość i łatwość konserwacji aplikacji Node.js, dostosowując się do najlepszych praktyk i promując bardziej intuicyjną i zorganizowaną strukturę kodu dla programistów pracujących nad dostosowywaniem modułów.

8. Lil HTTP 9.1.2 Egzekwowanie trybu ścisłego

Kolejną aktualizacją w Node.js 21 jest llhttp 9.1.2, która domyślnie wprowadza egzekwowanie trybu ścisłego, zapewniając większą niezawodność i bezpieczeństwo kodu. Zmiany obejmują obowiązkową obecność\r\npo nagłówkach i fragmentach w celu spójnego przetwarzania danych. Dodatkowo transmisja danych po wiadomości z nagłówkiemConnection: Closenie jest już dozwolona, ​​co poprawia zgodność protokołu i obsługę połączenia. Aby dostosować się do konkretnych przypadków użycia, wprowadzono flagę–insecure-http-parser, zapewniającą użytkownikom elastyczność w zakresie wyłączania tych zmian. Aktualizacje te mają na celu podniesienie stabilności systemu i spójności przetwarzania danych w aplikacjach Node.js, zachęcając programistów do przeglądu i dostosowania bazy kodu w celu zapewnienia bezproblemowej integracji.

9. Integracja obiektu „nawigator”.

Dzięki integracji obiektów „navigator” programiści mają teraz bezproblemowy dostęp do informacji o współbieżności sprzętu za pośrednictwem nowo wprowadzonego narzędzia navigator.hardwareConcurrency. To ulepszenie lepiej dostosowuje Node.js do środowisk przeglądarek, zapewniając programistom ustandaryzowany sposób pobierania szczegółów współbieżności sprzętu.

Co więcej, dzięki temu dodatkowi Node.js staje się bardziej wszechstronny, umożliwiając programistom tworzenie aplikacji efektywniej wykorzystujących zasoby sprzętowe, czy to w celu optymalizacji wydajności, czy wdrażania strategii przetwarzania równoległego.

Przejmij kontrolę nad rozwojem swojego Node.js dzięki wersji 21

Wersja Node.js 21 zawiera szereg ekscytujących ulepszeń, ulepszeń i nowych funkcji, które obiecują podnieść jakość programowania. Od wprowadzenia wbudowanego klienta WebSocket po obsługę globów w programie testowym, Node.js 21 zapewnia programistom potężne narzędzia do tworzenia nowoczesnych, wydajnych aplikacji. Eksplorując te udoskonalenia, pamiętaj o przetestowaniu aplikacji pod kątem kompatybilności i rozważeniu aktualizacji, zwłaszcza w przypadku statusu End-of-Life dla Node.js 16, 17 lub 19. Mając na uwadze złożoność procesu aktualizacji i migracji, tutaj biegły partner programistyczny Node.js może dokonać transformacji.

Chcesz ulepszyć rozwój aplikacji Node.js? Porozmawiaj z naszymi mistrzami deweloperów!

Nasi eksperci Node.js są biegli w tworzeniu wysokowydajnych rozwiązań internetowych, aplikacji jednostronicowych i progresywnych aplikacji internetowych. Jeśli chcesz dowiedzieć się więcej o naszych możliwościach w zakresie programowania Node.js, napisz do nas na adres [chroniony e-mailem] , a my się tym zajmiemy.

Bibliografia:

[i] Technologia Bacancy