Platforma JavaScript pe partea de server Node.js 19.0 disponibilă

Состоялся релиз Node.js 19.0, платформы для выполнения сетевых приложений на языке JavaScript. Node.js 19 отнесён к ветке с обычным сроком поддержки, обновления для которой будут выпускаться до июня 2023 года. В ближайшие дни будет завершена стабилизация ветки Node.js 18, которая получит статус LTS и будет поддерживаться до апреля 2025 года. Сопровождение прошлой LTS-ветки Node.js 16.0 продлится до сентября 2023 года, а позапрошлой LTS-ветки 14.0 до апреля 2023 года.

Principalele îmbunătățiri:

  • Движок V8 обновлён до версии 10.7, применяемой в Chromium 107. Из изменений в движке по сравнению с веткой Node.js 18 отмечается реализация третьей версии API Intl.NumberFormat, в которой добавлены новые функции formatRange(), formatRangeToParts() и selectRange(), группировка множеств, новые опции округления и задания точности, возможность интерпретации строк как десятичных чисел. Также обновлены входящие в комплект зависимости llhttp 8.1.0 и npm 8.19.2.
  • Предложена экспериментальная команда «node —watch» с реализацией режима наблюдения, обеспечивающего перезапуск процесса при изменении импортированного файла (например, в случае выполнения «node —watch index.js» процесс будет автоматически перезапущен при изменении index.js).
  • Для всех исходящих HTTP/HTTPS-соединений включена поддержка механизма HTTP 1.1 Keep-Alive, оставляющего соединение определённое время открытым для обработки в рамках одного соединения нескольких HTTP-запросов. Предполагается, что применение Keep-Alive позволит повысить пропускную способность и производительность. По умолчанию таймаут удержания соединения открытым выставлен в 5 секунд. В реализацию HTTP-клиента добавлена поддержка разбора HTTP-заголовка Keep-Alive в ответах сервера, а в реализацию HTTP-сервера Node.js добавлено автоматическое отсоединение неактивных клиентов, использующих Keep-Alive.
  • В разряд стабильных переведён API WebCrypto, за исключением функций, использующих алгоритмы Ed25519, Ed448, X25519 и X448. Для доступа к модулю WebCrypto теперь можно использовать globalThis.crypto или require(‘node:crypto’).webcrypto.
  • Удалена поддержка инструментариев трассировки DTrace, SystemTap и ETW (Event Tracing for Windows), поддержание которых признано нецелесообразным из-за сложности сопровождения в актуальном виде при отсутствии должного плана их поддержки.

Platforma Node.js poate fi utilizată atât pentru întreținerea pe server a aplicațiilor Web, cât și pentru crearea de programe obișnuite de rețea client și server. Pentru a extinde funcționalitatea aplicațiilor pentru Node.js, a fost pregătită o colecție mare de module, în care puteți găsi module cu implementare HTTP, SMTP, XMPP, DNS, FTP, IMAP, servere și clienți POP3, module pentru integrare cu diverse cadre web, handlere WebSocket și Ajax, conectori DBMS (MySQL, PostgreSQL, SQLite, MongoDB), motoare de șabloane, motoare CSS, implementări de algoritmi cripto și sisteme de autorizare (OAuth), parsere XML.

Pentru a asigura procesarea unui număr mare de solicitări paralele, Node.js folosește un model de execuție a codului asincron bazat pe gestionarea evenimentelor neblocante și pe definiția handlerelor de apel invers. Metodele acceptate pentru multiplexarea conexiunilor sunt epoll, kqueue, /dev/poll și select. Pentru multiplexarea conexiunii, se folosește biblioteca libuv, care este un add-on pentru libev pe sisteme Unix și IOCP pe Windows. Biblioteca libeio este folosită pentru a crea un pool de fire, iar c-ares este integrat pentru a efectua interogări DNS în modul neblocant. Toate apelurile de sistem care provoacă blocare sunt executate în interiorul pool-ului de fire și apoi, ca și manipulatorii de semnal, transferă rezultatul muncii lor înapoi printr-o conductă (conductă) fără nume. Execuția codului JavaScript este asigurată prin utilizarea motorului V8 dezvoltat de Google (în plus, Microsoft dezvoltă o versiune de Node.js cu motorul Chakra-Core).

La bază, Node.js este similar cu Perl AnyEvent, Ruby Event Machine, cadrele Python Twisted și implementarea evenimentului Tcl, dar bucla de evenimente din Node.js este ascunsă de dezvoltator și seamănă cu gestionarea evenimentelor într-o aplicație web care rulează în browser. Când scrieți aplicații pentru node.js, trebuie să luați în considerare specificul programării bazate pe evenimente, de exemplu, în loc să faceți „var result = db.query(”select..”);” cu așteptarea finalizării lucrărilor și procesarea ulterioară a rezultatelor, Node.js folosește principiul execuției asincrone, adică. codul este transformat în „db.query(”select..”, function (result) {result processing});”, în care controlul va trece instantaneu la codul suplimentar, iar rezultatul interogării va fi procesat pe măsură ce sosesc datele.

Sursa: opennet.ru

Adauga un comentariu