סערווירער-זייַט דזשאַוואַסקריפּט פּלאַטפאָרמע Node.js 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.

די Node.js פּלאַטפאָרמע קענען זיין געוויינט ביידע פֿאַר סערווער זייַט שטיצן פון וועב אַפּלאַקיישאַנז, און פֿאַר קריייטינג פּראָסט קליענט און סערווער נעץ מגילה. צו יקספּאַנד די פאַנגקשאַנאַליטי פון אַפּלאַקיישאַנז פֿאַר Node.js, אַ גרויס זאַמלונג פון מאַדזשולז איז צוגעגרייט, אין וואָס איר קענען געפֿינען מאַדזשולז מיט די ימפּלאַמענטיישאַן פון הטטפּ, סמטפּ, קסמפּפּ, דנס, פטפּ, ימאַפּ, פּאָפּ3 סערווערס און קלייאַנץ, מאַדזשולז פֿאַר ינטאַגריישאַן. מיט פאַרשידן וועב פראַמעוואָרקס, WebSocket און Ajax האַנדלערס, קאַנעקטערז צו DBMS (MySQL, PostgreSQL, SQLite, MongoDB), מוסטער ענדזשאַנז, CSS ענדזשאַנז, ימפּלאַמאַנץ פון קריפּטאָגראַפיק אַלגערידאַמז און דערלויבעניש סיסטעמען (OAuth), XML פּאַרסערס.

צו שעפּן גרויס נומער פון פּאַראַלעל ריקוועס, Node.js ניצט אַן ייסינגקראַנאַס קאָד דורכפירונג מאָדעל באזירט אויף ניט-בלאַקינג געשעעניש פּראַסעסינג און דיפיינינג קאַללבאַקק האַנדלערס. שטיצט מעטהאָדס פֿאַר מולטיפּלעקסינג קאַנעקשאַנז אַרייַננעמען epoll, kqueue, /dev/poll און select. פֿאַר קשר מולטיפּלעקסינג, די ליבווו ביבליאָטעק איז געניצט, וואָס איז אַן אַדישאַן צו ליבעוו אויף יוניקס סיסטעמען און צו IOCP אויף Windows. די ליביאָ ביבליאָטעק איז געניצט צו שאַפֿן אַ פאָדעם בעקן, און C-ares איז ינאַגרייטיד צו דורכפירן דנס פֿראגן אין אַ ניט-בלאַקינג מאָדע. אַלע סיסטעם רופט וואָס פאַרשאַפן בלאַקינג זענען עקסאַקיוטאַד אין די פאָדעם בעקן און דערנאָך, ווי סיגנאַל האַנדלערס, פאָרן די רעזולטאַט פון זייער אַרבעט צוריק דורך אַן אַנניימד רער. די דורכפירונג פון דזשאַוואַסקריפּט קאָד איז ינשורד דורך די נוצן פון די וו8 מאָטאָר דעוועלאָפּעד דורך Google (אין דערצו, מייקראָסאָפֿט איז דעוועלאָפּינג אַ ווערסיע פון ​​Node.js מיט די Chakra-Core מאָטאָר).

אין זיין האַרץ, Node.js איז ענלעך צו די Perl AnyEvent, Ruby Event Machine, Python Twisted פראַמעוואָרקס און די ימפּלאַמענטיישאַן פון געשעענישן אין Tcl, אָבער די געשעעניש שלייף אין Node.js איז פאַרבאָרגן פון די דעוועלאָפּער און ריזעמבאַלז געשעעניש פּראַסעסינג אין אַ וועב אַפּלאַקיישאַן. פליסנדיק אין בלעטערער. ווען שרייבן אַפּלאַקיישאַנז פֿאַר node.js, עס איז נייטיק צו נעמען אין חשבון די ספּעסיפיקס פון געשעעניש-געטריבן פּראָגראַממינג, פֿאַר בייַשפּיל, אַנשטאָט פון "var result = db.query ("סעלעקטירן..");" מיט ווארטן פֿאַר די קאַמפּלישאַן פון אַרבעט און סאַבסאַקוואַנט פּראַסעסינג פון די רעזולטאַטן, Node.js ניצט דעם פּרינציפּ פון ייסינגקראַנאַס דורכפירונג, י.ע. דער קאָד איז פארוואנדלען אין "db.query ("סעלעקטירן ..", פֿונקציע (רעזולטאַט) {רעזולטאַט פּראַסעסינג});", אין וואָס קאָנטראָל וועט גלייך פאָרן צו ווייַטער קאָד, און די אָנפֿרעג רעזולטאַט וועט זיין פּראַסעסט ווי דאַטן ערייווז.

מקור: opennet.ru

לייגן אַ באַמערקונג