Dostępna jest platforma JavaScript po stronie serwera Node.js 19.0

Ukazała się Node.js 19.0, platforma do uruchamiania aplikacji sieciowych w języku JavaScript. Node.js 19 to zwykła gałąź wsparcia z aktualizacjami dostępnymi do czerwca 2023 roku. W najbliższych dniach zakończy się stabilizacja gałęzi Node.js 18, która otrzyma status LTS i będzie wspierana do kwietnia 2025 roku. Utrzymanie dotychczasowej gałęzi LTS Node.js 16.0 potrwa do września 2023, a rok wcześniej ostatniej gałęzi LTS 14.0 do kwietnia 2023.

Główne ulepszenia:

  • Zaktualizowano silnik V8 do wersji 10.7, zastosowanej w Chromium 107. Wśród zmian w silniku w stosunku do gałęzi Node.js 18 odnotowuje się implementację trzeciej wersji API Intl.NumberFormat, która dodaje nowe funkcje formatRange (), formatRangeToParts() iselectRange(), grupowanie zbiorów, nowe opcje zaokrąglania i ustawiania precyzji, możliwość interpretacji ciągów jako liczb dziesiętnych. Zaktualizowano także zawarte zależności llhttp 8.1.0 i npm 8.19.2.
  • Zaproponowano eksperymentalną komendę „node -watch” z implementacją trybu oglądania, który zapewnia ponowne uruchomienie procesu po zmianie zaimportowanego pliku (na przykład, jeśli zostanie wykonane „node -watch indeks.js”, proces zostanie automatycznie uruchamiany ponownie po zmianie pliku Index.js).
  • Dla wszystkich wychodzących połączeń HTTP/HTTPS włączona jest obsługa mechanizmu HTTP 1.1 Keep-Alive, który pozostawia połączenie otwarte przez pewien czas w celu przetworzenia kilku żądań HTTP w ramach tego samego połączenia. Oczekuje się, że Keep-Alive poprawi przepustowość i wydajność. Domyślnie limit czasu otwarcia połączenia jest ustawiony na 5 sekund. Do implementacji klienta HTTP dodano obsługę analizowania nagłówka HTTP Keep-Alive w odpowiedziach serwera, a do implementacji serwera HTTP Node.js dodano automatyczne rozłączanie nieaktywnych klientów za pomocą Keep-Alive.
  • WebCrypto API zostało przeniesione do kategorii stabilnej, za wyjątkiem funkcji korzystających z algorytmów Ed25519, Ed448, X25519 i X448. Aby uzyskać dostęp do modułu WebCrypto, możesz teraz użyć globalThis.crypto lub require('node:crypto').webcrypto.
  • Usunięto obsługę narzędzi śledzących DTrace, SystemTap i ETW (Event Tracing for Windows), których utrzymanie uznano za niewłaściwe ze względu na złożoność utrzymywania ich na bieżąco w przypadku braku odpowiedniego planu wsparcia.

Platforma Node.js może być wykorzystywana zarówno do utrzymania serwerów aplikacji webowych, jak i do tworzenia zwykłych programów sieciowych typu klient i serwer. Dla rozszerzenia funkcjonalności aplikacji dla Node.js przygotowano duży zbiór modułów, w którym można znaleźć moduły z implementacją serwerów i klientów HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, moduły do ​​integracji z różnymi frameworkami webowymi, handlerami WebSocket i Ajax, konektorami DBMS (MySQL, PostgreSQL, SQLite, MongoDB), silnikami szablonów, silnikami CSS, implementacjami algorytmów kryptograficznych i systemów autoryzacji (OAuth), parserami XML.

Aby zapewnić przetwarzanie dużej liczby równoległych żądań, Node.js wykorzystuje asynchroniczny model wykonywania kodu oparty na nieblokującej obsłudze zdarzeń i definicji procedur obsługi wywołań zwrotnych. Obsługiwane metody multipleksowania połączeń to epoll, kqueue, /dev/poll i select. Do multipleksowania połączeń używana jest biblioteka libuv, która jest dodatkiem do libev w systemach Unix i IOCP w Windows. Biblioteka libeio służy do tworzenia puli wątków, a c-ares jest zintegrowany do wykonywania zapytań DNS w trybie nieblokującym. Wszystkie wywołania systemowe, które powodują blokowanie, są wykonywane wewnątrz puli wątków, a następnie, podobnie jak procedury obsługi sygnałów, przekazują wynik swojej pracy z powrotem przez nienazwany potok (pipe). Wykonanie kodu JavaScript zapewnia wykorzystanie silnika V8 opracowanego przez Google (dodatkowo Microsoft rozwija wersję Node.js z silnikiem Chakra-Core).

W swej istocie Node.js jest podobny do platform Perl AnyEvent, Ruby Event Machine, Python Twisted i implementacji zdarzeń Tcl, ale pętla zdarzeń w Node.js jest ukryta przed programistą i przypomina obsługę zdarzeń w działającej aplikacji internetowej w przeglądarce. Pisząc aplikacje dla node.js, musisz wziąć pod uwagę specyfikę programowania sterowanego zdarzeniami, na przykład zamiast robić „var result = db.query("select..");" z oczekiwaniem na zakończenie pracy i późniejszym przetwarzaniem wyników Node.js wykorzystuje zasadę wykonania asynchronicznego, tj. kod jest przekształcany na "db.query("select..", function (result) {result processing});", w którym sterowanie natychmiast przejdzie do dalszego kodu, a wynik zapytania zostanie przetworzony w miarę napływu danych.

Źródło: opennet.ru

Dodaj komentarz