Galima serverio JavaScript platforma Node.js 19.0

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

Pagrindiniai patobulinimai:

  • Движок 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), поддержание которых признано нецелесообразным из-за сложности сопровождения в актуальном виде при отсутствии должного плана их поддержки.

Node.js platforma gali būti naudojama tiek žiniatinklio programų serverių priežiūrai, tiek įprastų klientų ir serverių tinklo programoms kurti. Aplikacijų, skirtų Node.js, funkcionalumui praplėsti, parengta didelė modulių kolekcija, kurioje galima rasti modulių su HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 serverių ir klientų diegimu, modulių integravimui su įvairiomis žiniatinklio sistemomis, „WebSocket“ ir „Ajax“ tvarkytuvais, DBMS jungtimis (MySQL, PostgreSQL, SQLite, MongoDB), šablonų varikliais, CSS varikliais, kriptovaliutų algoritmų diegimu ir autorizacijos sistemomis (OAuth), XML analizatoriais.

Siekdama užtikrinti daugelio lygiagrečių užklausų apdorojimą, Node.js naudoja asinchroninio kodo vykdymo modelį, pagrįstą neblokuojančiu įvykių tvarkymu ir atgalinio skambučio tvarkyklių apibrėžimu. Palaikomi jungčių tankinimo metodai yra epoll, kqueue, /dev/poll ir select. Ryšių tankinimui naudojama libuv biblioteka, kuri yra libev priedas Unix sistemose ir IOCP Windows sistemoje. Libeio biblioteka naudojama gijų telkiniui sukurti, o c-ares integruota DNS užklausoms atlikti neblokuojančiu režimu. Visi sistemos iškvietimai, sukeliantys blokavimą, yra vykdomi gijų telkinyje, o tada, kaip ir signalų tvarkytojai, perduoda savo darbo rezultatą atgal per neįvardytą vamzdį (vamzdį). „JavaScript“ kodo vykdymas užtikrinamas naudojant „Google“ sukurtą V8 variklį (be to, „Microsoft“ kuria „Node.js“ versiją su „Chakra-Core“ varikliu).

Iš esmės Node.js yra panašus į Perl AnyEvent, Ruby Event Machine, Python Twisted sistemas ir Tcl įvykių įgyvendinimą, tačiau Node.js įvykių ciklas yra paslėptas nuo kūrėjo ir primena įvykių tvarkymą veikiančioje žiniatinklio programoje. naršyklėje. Rašydami node.js programas, turite atsižvelgti į įvykiais pagrįsto programavimo specifiką, pavyzdžiui, užuot darę "var result = db.query("select..");" su laukimu, kol bus baigtas darbas ir vėliau apdorojami rezultatai, Node.js naudoja asinchroninio vykdymo principą, t.y. kodas paverčiamas į "db.query("select..", funkcija (rezultatas) {rezultato apdorojimas});", kurioje valdymas akimirksniu pereis prie tolimesnio kodo, o užklausos rezultatas bus apdorojamas gavus duomenis.

Šaltinis: opennet.ru

Добавить комментарий