Wersja serwera JavaScript Node.js 13.0

Do dyspozycji wydanie Node.js 13.0,platformy do uruchamiania aplikacji sieciowych w JavaScript. Jednocześnie zakończono stabilizację poprzedniej gałęzi Node.js 12.x, która została przeniesiona do kategorii wydań wsparcia długoterminowego, dla których aktualizacje wydawane są na 4 lata. Wsparcie dla poprzedniej gałęzi LTS Node.js 10.0 potrwa do kwietnia 2021, a wsparcie dla ostatniej gałęzi LTS 8.0 do stycznia 2020.

Głównym ulepszenia:

  • Silnik V8 zaktualizowany do wersji 7.8, który wykorzystuje nowe techniki optymalizacji wydajności, poprawia destrukturyzację obiektów, zmniejsza zużycie pamięci i skraca czas przygotowania do wykonania zestawu WebAssembly;
  • Domyślnie włączona jest pełna obsługa internacjonalizacji i Unicode opartego na bibliotekach ICU (International Components for Unicode), który umożliwia programistom pisanie kodu Wspierający pracować z różnymi językami i lokalizacjami. Moduł pełnego icu jest teraz instalowany domyślnie;
  • API ustabilizowane Wątki pracownicze, pozwalać tworzyć wielowątkowe pętle zdarzeń. Implementacja oparta jest o moduł worker_threads, który umożliwia uruchamianie kodu JavaScript w wielu równoległych wątkach. Stabilna obsługa interfejsu API Workers Threads została również przeniesiona do gałęzi LTS Node.js 12.x;
  • Zwiększono wymagania dotyczące platform. Teraz do montażu wymagane przynajmniej macOS 10.11 (wymaga Xcode 10), AIX 7.2, Ubuntu 16.04, Debian 9, EL 7, Alpine 3.8, Windows 7/2008;
  • Ulepszona obsługa Pythona 3. Jeśli w systemie jest zainstalowany zarówno Python 2, jak i Python 3, Python 2 jest nadal używany, ale dodano możliwość budowania, gdy w systemie jest zainstalowany tylko Python 3;
  • Stara implementacja parsera HTTP („—http-parser=legacy”) została usunięta. Usunięte lub przestarzałe wywołania i właściwości FSWatcher.prototype.start(), ChildProcess._channel, metoda open() w obiektach ReadStream i WriteStream, request.connection,Response.connection, module.createRequireFromPath();
  • Dalej wyszedł aktualizacja 13.0.1, która szybko naprawiła kilka błędów. W szczególności rozwiązano problem z wyświetlaniem przez npm 6.12.0 ostrzeżenia o użyciu nieobsługiwanej wersji.

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