Wersja serwera JavaScript Node.js 14.0

Odbyła się wydanie Node.js 14.0,platformy do uruchamiania aplikacji sieciowych w JavaScript. Node.js 14.0 jest gałęzią wsparcia długoterminowego, jednak status ten zostanie nadany dopiero w październiku, po ustabilizowaniu się. Obsługiwana będzie wersja Node.js 14.0 być przeprowadzonym do kwietnia 2023 r. Utrzymanie dotychczasowej gałęzi LTS Node.js 12.0 potrwa do kwietnia 2022, a rok wcześniej ostatniej gałęzi LTS 10.0 do kwietnia 2021. Wsparcie dla gałęzi testowej 13.x zakończy się w czerwcu tego roku.

Głównym ulepszenia:

  • Ustabilizowano możliwość generowania w locie lub po wystąpieniu określonych zdarzeń raporty diagnostyczne, które wyświetlają zdarzenia pomagające diagnozować problemy, takie jak awarie, spadek wydajności, wycieki pamięci, duże obciążenie procesora, nieoczekiwane wyjście błędu itp.
  • Dodano eksperymentalną obsługę API Asynchroniczna pamięć lokalna z implementacją klasy AsyncLocalStorage, za pomocą której można utworzyć stan asynchroniczny z handlerami opartymi na wywołaniach zwrotnych i obietnicach. AsyncLocalStorage umożliwia przechowywanie danych podczas przetwarzania żądania internetowego, co przypomina lokalne przechowywanie wątków w innych językach.
  • Usunięto komunikat ostrzegawczy dotyczący funkcji eksperymentalnej podczas ładowania moduły ECMAScript 6 połączone i wyeksportowane przy użyciu instrukcji importu i eksportu. Jednocześnie samo wdrożenie modułów ESM pozostaje eksperymentalne.
  • Silnik V8 zaktualizowany do wersji 8.1 (1, 2, 3), który obejmuje nowe optymalizacje wydajności i funkcje, takie jak nowy operator łączenia logicznego „?” (zwraca prawy operand, jeśli lewy operand ma wartość NULL lub jest niezdefiniowany i odwrotnie), operator „?” do jednorazowego sprawdzenia całego łańcucha właściwości lub wywołań (np. „db?.user?.name?.length” bez wstępnego sprawdzenia), metody Intl.DisplayName do uzyskania zlokalizowanych nazw itp.
  • Przeprowadzono rewizję Streams API, mającą na celu poprawę spójności Streams API i wyeliminowanie różnic w zachowaniu podstawowych części Node.js. Na przykład zachowanie http.OutgoingMessage jest zbliżone do stream.Writable, a net.Socket jest podobne do stream.Duplex. Opcja autoDestroy jest domyślnie ustawiona na „true”, co oznacza wywołanie „_destroy” po zakończeniu.
  • Dodano eksperymentalną obsługę API CZY BYŁEM (Interfejs systemu WebAssembly), udostępniając interfejsy programowe do bezpośredniej interakcji z systemem operacyjnym (POSIX API do pracy z plikami, gniazdami itp.).
  • Zwiększone wymagania dot wersje minimalne kompilatory i platformy: macOS 10.13 (High Sierra), GCC 6, Nowszy system Windows 7/2008R2.

Przypomnijmy, że platformę Node.js można wykorzystać zarówno do obsługi aplikacji webowych po stronie serwera, jak i do tworzenia zwykłych programów sieciowych klienckich i serwerowych. Aby rozszerzyć funkcjonalność aplikacji dla Node.js, duża liczba 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, konektory do DBMS (MySQL, PostgreSQL, SQLite , MongoDB ), silniki szablonów, silniki CSS, implementacje algorytmów kryptograficznych i systemów autoryzacji (OAuth), parsery XML.

Aby obsłużyć dużą liczbę równoległych żądań, Node.js wykorzystuje asynchroniczny model wykonywania kodu oparty na nieblokującym przetwarzaniu zdarzeń i definiowaniu procedur obsługi wywołań zwrotnych. Obsługiwane metody multipleksowania połączeń obejmują epoll, kqueue, /dev/poll i Select. Biblioteka służy do multipleksowania połączeń libacja, który jest nadbudówką Libew w systemach Unix i przez IOCP w Windows. Biblioteka służy do tworzenia puli wątków libeio, do wykonywania zapytań DNS w trybie nieblokującym jest zintegrowany c-ares. Wszystkie wywołania systemowe powodujące blokowanie są wykonywane w puli wątków, a następnie, podobnie jak procedury obsługi sygnałów, przekazują wynik swojej pracy z powrotem przez nienazwany potok. Wykonanie kodu JavaScript zapewnia zastosowanie silnika opracowanego przez firmę Google V8 (Dodatkowo Microsoft pracuje nad wersją Node.js z silnikiem Chakra-Core).

W swojej istocie Node.js jest podobny do frameworków Perl AnyEvent, Rubinowa maszyna zdarzeń, Pyton przekręcony и realizacja zdarzenia w Tcl, natomiast pętla zdarzeń w Node.js jest ukryta przed programistą i przypomina obsługę zdarzeń w aplikacji internetowej działającej w przeglądarce. Pisząc aplikacje dla node.js, należy wziąć pod uwagę specyfikę programowania sterowanego zdarzeniami, zamiast np. robić „var wynik = db.query(„select..”);” w oczekiwaniu na zakończenie pracy i późniejszym przetwarzaniu wyników Node.js wykorzystuje zasadę wykonania asynchronicznego, tj. kod zostaje przekształcony do postaci „db.query(“select..”, funkcja (result) {przetwarzanie wyniku});”, w której kontrola zostanie natychmiast przekazana dalszemu kodowi, a wynik zapytania zostanie przetworzony w miarę nadejścia danych. .

Źródło: opennet.ru

Dodaj komentarz