Доступна је ЈаваСцрипт платформа Ноде.јс 21.0 на страни сервера

Состоялся релиз Node.js 21.0, платформы для выполнения сетевых приложений на языке JavaScript. Поддержка ветки Node.js 21.0 будет осуществляться в течение 6 месяцев. В ближайшие дни будет завершена стабилизация ветки Node.js 20, которая получит статус LTS и будет поддерживаться до апреля 2026 года. Сопровождение прошлой LTS-ветки Node.js 18.0 продлится до сентября 2025 года, а позапрошлой LTS-ветки 16.0 до апреля 2024 года.

Главна побољшања:

  • Объявлен стабильным API Fetch, предназначенный для загрузки ресурсов по сети и упрощающий написание универсального JavaScript-кода, пригодного для работы на стороне сервера и клиента. Реализация основана на коде из HTTP/1.1 клиента undici и максимально приближена к аналогичному API, предоставляемому в браузерах. API включает в себя метод fetch() и объекты 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 WebStreams, предоставляющего доступ к потокам данных, полученным по сети. API даёт возможность добавить свои обработчики, работающие с данными по мере поступления информации по сети, не дожидаясь загрузки всего файла. В Node.js доступны такие объекты, как ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream и DecompressionStream.
  • Добавлена экспериментальная реализация клиента WebSocket, совместимая с браузерами. Для включения поддержки WebSocket предусмотрен флаг «—experimental-websocket».
  • Добавлен экспериментальный режим использования по умолчанию реализации JavaScript-модулей ESM (ECMAScript Modules, применяется в модулях для браузеров) вместо CommonJS (специфичен для Node.js). Изменение не затрагивает модули, формат которых явно определён через поле «type» в package.json, задан через флаг «—input-type» или очевиден в силу расширения файла (.mjs для ESM, .cjs для CommonJS). При этом модули, которые явно не определены как CommonJS (например, имеют расширение «.js»), при включении нового режима будут восприниматься как модули ESM. Для активации новых настроек модулей предложен флаг «—experimental-default-type».
  • Движок V8 обновлён до версии 11.8, применяемой в Chromium 118, в котором появилась поддержка метода ArrayBuffer.prototype.transfer, возможности группировки массивов (метод groupBy) и WebAssembly-инструкций обработки констант (i32.add, i32.sub, i32.mul, i64.add, i64.sub и i64.mul).
  • Прекращена поддержка обработчика globalPreload, вместо которого для настройки модулей следует использовать вызовы register и initialize.
  • В функцию fs.writeFile добавлена опция «flush» для принудительного сброса данных на накопитель после каждой операции записи.
  • Повышена производительность кода, связанного с разбором URL, API fetch, streams, node:fs и HTTP.
  • Добавлен глобальный объект navigator. Например, для получения данных о числе ядер CPU можно использовать свойство navigator.hardwareConcurrency.
  • В параметре «—test» добавлена поддержка glob-масок для выбора запускаемых тестов (например, можно указать «—test **/*.test.js.»).
  • Обновлены входящие в комплект пакетный менеджер npm 10.2.0 и парсер llhttp 9.1.2.
  • Прекращена поддержка Visual Studio 2019 и версий macOS старее 11.0.

Ноде.јс платформа се може користити како за серверско одржавање веб апликација, тако и за креирање редовних клијентских и серверских мрежних програма. За проширење функционалности апликација за Ноде.јс, припремљена је велика колекција модула у којој се могу пронаћи модули са имплементацијом ХТТП, СМТП, КСМПП, ДНС, ФТП, ИМАП, ПОП3 сервера и клијената, модули за интеграцију са различитим веб оквирима, ВебСоцкет и Ајак руковаоцима, ДБМС конекторима (МиСКЛ, ПостгреСКЛ, СКЛите, МонгоДБ), шаблонским машинама, ЦСС машинама, имплементацијама крипто алгоритама и система ауторизације (ОАутх), КСМЛ парсерима.

Да би обезбедио обраду великог броја паралелних захтева, Ноде.јс користи модел извршавања асинхроног кода заснован на руковању неблокирајућим догађајима и дефиницији руковалаца повратним позивима. Подржане методе за мултиплексирање веза су еполл, ккуеуе, /дев/полл и селецт. За мултиплексирање везе користи се библиотека либув, која је додатак за либев на Уник системима и ИОЦП на Виндовс-у. Библиотека либеио се користи за креирање скупа нити, а ц-арес је интегрисан за обављање ДНС упита у режиму без блокирања. Сви системски позиви који узрокују блокирање се извршавају унутар скупа нити, а затим, као руковаоци сигнала, преносе резултат свог рада назад кроз неименовану цев (цев). Извршење ЈаваСцрипт кода је обезбеђено коришћењем В8 мотора који је развио Гоогле (поред тога, Мицрософт развија верзију Ноде.јс са Цхакра-Цоре мотором).

У својој сржи, Ноде.јс је сличан Перл АниЕвент, Руби Евент Мацхине, Питхон Твистед оквирима и имплементацији догађаја Тцл, али је петља догађаја у Ноде.јс скривена од програмера и подсећа на руковање догађајима у веб апликацији која ради у претраживачу. Када пишете апликације за ноде.јс, потребно је да узмете у обзир специфичности програмирања заснованог на догађајима, на пример, уместо да радите „вар ресулт = дб.куери("селецт..");" са чекањем завршетка рада и накнадном обрадом резултата, Ноде.јс користи принцип асинхроног извршавања, тј. код се трансформише у "дб.куери("селецт..", фунцтион (ресулт) {ресулт процессинг});", у коме ће контрола тренутно прећи на даљи код, а резултат упита ће бити обрађен како подаци стигну.

Извор: опеннет.ру

Додај коментар