Достапна е JavaScript платформата 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 година.

Главни подобрувања:

  • Fetch API е прогласен за стабилен, дизајниран за вчитување ресурси преку мрежата и поедноставување на пишувањето на универзален JavaScript код погоден за работа на страната на серверот и клиентот. Имплементацијата се заснова на код од клиентот HTTP/1.1 undici и е што е можно поблиску до сличното API обезбедено во прелистувачите. API го вклучува методот fetch() и објектите Headers. Барање и одговор, претставувајќи ги заглавијата на HTTP, барање и одговор. const res = await fetch('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = await res.json(); конзола.log(податоци); }
  • Поддршката за WebStreams API, која обезбедува пристап до потоци на податоци добиени преку мрежата, е стабилизирана. 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 е прекината, во корист на регистрирање и иницијализирање повици за конфигурирање на модулите.
  • Опцијата „flush“ е додадена во функцијата fs.writeFile за да се принуди податоците да се фрлаат во уредот по секоја операција за запишување.
  • Подобрена изведба на кодот поврзан со парсирање на URL, преземање API, преноси, node:fs и HTTP.
  • Додаден глобален навигаторски објект. На пример, за да добиете податоци за бројот на јадра на процесорот, можете да го користите својството navigator.hardwareConcurrency.
  • Во параметарот „—test“, додадена е поддршка за глоб маски за избирање тестови за извршување (на пример, можете да наведете „—test **/*.test.js.“).
  • Управувачот со пакети npm 10.2.0 и парсерот llhttp 9.1.2 се ажурирани.
  • Поддршката за Visual Studio 2019 и верзии на macOS постари од 11.0 е прекината.

Платформата Node.js може да се користи и за серверско одржување на веб-апликации и за креирање редовни мрежни програми за клиент и сервер. За проширување на функционалноста на апликациите за Node.js, подготвена е голема колекција на модули, во кои можете да најдете модули со имплементација на HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 сервери и клиенти, модули за интеграција со различни веб-рамки, WebSocket и Ajax управувачи, DBMS конектори (MySQL, PostgreSQL, SQLite, MongoDB), мотори за шаблони, CSS мотори, имплементации на крипто алгоритми и системи за авторизација (OAuth), XML парсери.

За да се обезбеди обработка на голем број паралелни барања, Node.js користи асинхрон модел за извршување код базиран на неблокирачко справување со настани и дефиниција за ракувачи со повратен повик. Поддржани методи за мултиплексирање конекции се epoll, kqueue, /dev/poll и select. За мултиплексирање на поврзување, се користи библиотеката libuv, која е додаток за libev на Unix системите и IOCP на Windows. Библиотеката libeio се користи за создавање на базен на нишки, а c-ares е интегриран за извршување на барања за DNS во режим без блокирање. Сите системски повици кои предизвикуваат блокирање се извршуваат внатре во базенот на нишки и потоа, како ракувачи со сигнали, го пренесуваат резултатот од нивната работа назад преку неименувана цевка (цевка). Извршувањето на JavaScript кодот е обезбедено преку употреба на моторот V8 развиен од Google (покрај тоа, Microsoft развива верзија на Node.js со моторот Chakra-Core).

Во неговото јадро, Node.js е сличен на Perl AnyEvent, Ruby Event Machine, Python Twisted рамки и имплементацијата на настанот Tcl, но циклусот на настани во Node.js е скриен од развивачот и наликува на справување со настани во веб-апликација која работи во прелистувачот. Кога пишувате апликации за node.js, треба да ги земете предвид спецификите на програмирањето управувано од настани, на пример, наместо да правите "var result = db.query("select..");" со чекање за завршување на работата и последователна обработка на резултатите, Node.js го користи принципот на асинхроно извршување, т.е. кодот се трансформира во „db.query („избери..“, функција (резултат) {обработка на резултат});“, во која контролата веднаш ќе премине на понатамошниот код, а резултатот од барањето ќе се обработува како што пристигнуваат податоците.

Извор: opennet.ru

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