Pjattaforma JavaScript fuq in-naħa tas-server Node.js 18.0 disponibbli

Состоялся релиз Node.js 18.0, платформы для выполнения сетевых приложений на языке JavaScript. Node.js 18.0 отнесён к веткам с длительным сроком поддержки, но данный статус будет присвоен только в октябре, после проведения стабилизации. Поддержка Node.js 18.x будет осуществляться до апреля 2025 года. Сопровождение прошлой LTS-ветки Node.js 16.x продлится до апреля 2024 года, а позапрошлой LTS-ветки 14.x до апреля 2023 года. Сопровождение LTS-ветки 12.x будет прекращено 30 апреля, а промежуточной ветки Node.js 17.x — 1 июня.

Titjib ewlieni:

  • Движок V8 обновлён до версии 10.1, применяемой в Chromium 101. По сравнению с выпуском Node.js 17.9.0 появилась поддержка таких возможностей, как методы findLast и findLastIndex для поиска элементов относительно конца массива и функции Intl.supportedValuesOf. Улучшен API Intl.Locale. Ускорена инициализация полей классов и приватных методов.
  • Включён по умолчанию экспериментальный API fetch(), предназначенный для загрузки ресурсов по сети. Реализация основана на коде из HTTP/1.1 клиента undici и максимально приближена к аналогичному API, предоставляемому в браузерах. В том числе обеспечена поддержка интерфейсов FormData, Headers, Request и Response для манипуляции HTTP-заголовками запросов и ответов. const res = await fetch(‘https://nodejs.org/api/documentation.json’); if (res.ok) { const data = await res.json(); console.log(data); }
  • Добавлена экпериментальная реализация API Web Streams, предоставляющего доступ к потокам данных, полученным по сети. API даёт возможность добавить свои обработчики для работы с данными по мере поступления информации по сети, не дожидаясь загрузки всего файла. В Node.js теперь доступны такие объекты, как ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream и DecompressionStream.
  • В число стабильных переведён API Blob, который позволяет инкапсулировать неизменяемые сырые данные для их безопасного использования в разных рабочих потоках.
  • В число стабильных переведён API BroadcastChannel, позволяющий организовать обмен сообщениями в асинхронном режиме в формате «один отправитель — много получателей».
  • Добавлен экспериментальный модуль node:test для создания и запуска тестов на языке JavaScript, возвращающих результат в формате TAP (Test Anything Protocol).
  • Обеспечено формирование готовых сборок для Red Hat Enterprise Linux (RHEL) 8 и других дистрибутивов на базе Glibc 2.28+, включая Debian 10 и Ubuntu 20.04, а также для macOS 10.15+. Из-за проблем со сборкой движка V8 временно прекращено формирование 32-разрядных сборок для Windows.
  • Предоставлена экспериментальная возможность сборки исполняемого файла Node.js с выбранными пользователем компонентами, инициализируемыми при запуске. Для определения стартовых компонентов в сборочный скрипт configure добавлена опция «—node-snapshot-main», например, «./configure —node-snapshot-main=marked.js; name node»

Il-pjattaforma Node.js tista 'tintuża kemm għall-manutenzjoni tas-server tal-applikazzjonijiet tal-Web kif ukoll għall-ħolqien ta' programmi regolari tan-netwerk tal-klijenti u tas-server. Biex tespandi l-funzjonalità tal-applikazzjonijiet għal Node.js, ġiet ippreparata ġabra kbira ta 'moduli, li fiha tista' ssib moduli bl-implimentazzjoni ta 'HTTP, SMTP, XMPP, DNS, FTP, IMAP, servers u klijenti POP3, moduli għall-integrazzjoni b'diversi oqfsa tal-web, WebSocket u Ajax handlers, konnetturi DBMS (MySQL, PostgreSQL, SQLite, MongoDB), magni tat-templating, magni CSS, implimentazzjonijiet ta 'algoritmi kripto u sistemi ta' awtorizzazzjoni (OAuth), parsers XML.

Biex jiġi żgurat l-ipproċessar ta 'numru kbir ta' talbiet paralleli, Node.js juża mudell ta 'eżekuzzjoni ta' kodiċi asinkronu bbażat fuq l-immaniġġjar ta 'avvenimenti li ma jimblukkawx u d-definizzjoni ta' handlers ta 'callback. Metodi appoġġjati għall-konnessjonijiet multiplexing huma epoll, kqueue, /dev/poll, u select. Għall-multiplexing tal-konnessjoni, tintuża l-librerija libuv, li hija add-on għal libev fuq sistemi Unix u IOCP fuq Windows. Il-librerija libeio tintuża biex tinħoloq pool ta 'ħajt, u c-ares huwa integrat biex iwettaq mistoqsijiet DNS f'modalità mhux imblukkata. Is-sejħiet kollha tas-sistema li jikkawżaw l-imblukkar huma eżegwiti ġewwa l-pool tal-ħajt u mbagħad, bħal dawk li jimmaniġġjaw is-sinjali, jittrasferixxu r-riżultat tax-xogħol tagħhom lura permezz ta 'pajp (pajp) bla isem. L-eżekuzzjoni tal-kodiċi JavaScript hija pprovduta permezz tal-użu tal-magna V8 żviluppata minn Google (barra minn hekk, Microsoft qed tiżviluppa verżjoni ta 'Node.js bil-magna Chakra-Core).

Fil-qalba tiegħu, Node.js huwa simili għall-Perl AnyEvent, Ruby Event Machine, Python Twisted oqfsa, u l-implimentazzjoni tal-avvenimenti Tcl, iżda l-linja tal-avvenimenti f'Node.js hija moħbija mill-iżviluppatur u tixbaħ l-immaniġġjar tal-avvenimenti f'applikazzjoni tal-web li taħdem. fil-browser. Meta tikteb applikazzjonijiet għal node.js, trid tikkunsidra l-ispeċifiċitajiet tal-ipprogrammar mmexxi mill-avvenimenti, pereżempju, minflok ma tagħmel "var result = db.query ("select..");" bl-istennija għat-tlestija tax-xogħol u l-ipproċessar sussegwenti tar-riżultati, Node.js juża l-prinċipju ta 'eżekuzzjoni asinkronika, i.e. il-kodiċi jinbidel f'"db.query ("select..", funzjoni (riżultat) {proċessar tar-riżultat});", li fih il-kontroll jgħaddi istantanjament għal aktar kodiċi, u r-riżultat tal-mistoqsija jiġi pproċessat hekk kif tasal id-data.

Sors: opennet.ru

Żid kumment