Está disponível a plataforma de JavaScript do servidor Node.js 21.0

Foi lançado o Node.js 21.0, uma plataforma para execução de aplicações de rede em JavaScript. O suporte para a versão Node.js 21.0 será mantido por 6 meses. Nos próximos dias, a estabilização da versão Node.js 20 será concluída, que receberá o status LTS e será suportada até abril de 2026. O suporte para a versão LTS anterior, Node.js 18.0, durará até setembro de 2025, e para a versão LTS anterior a esta, 16.0, até abril de 2024.

Principais melhorias:

  • Foi anunciado como estável o API Fetch, projetado para carregar recursos pela rede e simplificar a escrita de código JavaScript universal, aplicável tanto no servidor quanto no cliente. A implementação é baseada no código do cliente HTTP/1.1 undici e é o mais próximo possível do API semelhante disponível em navegadores. O API inclui o método fetch() e os objetos Headers, Request e Response, que representam os cabeçalhos HTTP, requisições e respostas. const res = await fetch('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = await res.json(); console.log(data); }
  • Foi estabilizado o suporte para o API WebStreams, que fornece acesso a fluxos de dados obtidos pela rede. O API permite adicionar seus próprios manipuladores, trabalhando com dados à medida que as informações chegam pela rede, sem esperar o carregamento de todo o arquivo. No Node.js, estão disponíveis objetos como ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream e DecompressionStream.
  • Foi adicionada uma implementação experimental do cliente WebSocket, compatível com navegadores.Para ativar o suporte ao WebSocket, um sinalizador "—experimental-websocket" foi previsto.
  • Foi adicionado um modo experimental para a utilização por padrão da implementação de módulos JavaScript ESM (ECMAScript Modules, utilizados em módulos para navegadores) em vez de CommonJS (específico para Node.js). A alteração não afeta os módulos cujo formato é explicitamente definido pelo campo "type" no package.json, especificado pelo sinalizador "—input-type" ou óbvio pelo formato do arquivo (.mjs para ESM, .cjs para CommonJS). Neste caso, os módulos que não são explicitamente definidos como CommonJS (por exemplo, têm a extensão " .js ") serão tratados como módulos ESM ao ativar o novo modo. O sinalizador "—experimental-default-type" foi proposto para ativar as novas configurações de módulos.
  • O motor V8 foi atualizado para a versão 11.8, utilizada no Chromium 118, que trouxe suporte para o método ArrayBuffer.prototype.transfer, a capacidade de agrupar arrays (método groupBy) e instruções WebAssembly para processamento de constantes (i32.add, i32.sub, i32.mul, i64.add, i64.sub e i64.mul).
  • O suporte para o manipulador globalPreload foi interrompido. Em vez disso, deve-se usar as chamadas register e initialize para configurar módulos.
  • Foi adicionada uma opção 'flush' à função fs.writeFile para forçar a gravação de dados no dispositivo após cada operação de escrita.
  • A performance do código relacionado à análise de URL, API fetch, streams, node:fs e HTTP foi melhorada.
  • Um objeto global navigator foi adicionado. Por exemplo, para obter informações sobre o número de núcleos CPU, pode-se usar a propriedade navigator.hardwareConcurrency.
  • Suporte para máscaras globais foi adicionado ao parâmetro '--test' para selecionar testes a serem executados (por exemplo, pode-se especificar ‘--test **/*.test.js’).
  • O gerenciador de pacotes npm 10.2.0 e o analisador llhttp 9.1.2 foram atualizados.
  • O suporte para o Visual Studio 2019 e versões do macOS anteriores à 11.0 foi interrompido.

A plataforma Node.js pode ser utilizada tanto para suporte do lado do servidor de aplicações web quanto para criar programas de rede comuns tanto do lado do cliente quanto do servidor. Para expandir a funcionalidade das aplicações Node.js, foi preparada uma grande coleção de módulos, onde é possível encontrar módulos com implementações servidores e clientes HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, módulos para integração com diversos frameworks web, manipuladores WebSocket e Ajax, conectores a bancos de dados (MySQL, PostgreSQL, SQLite, MongoDB), motores de template, motores CSS, implementações de algoritmos de criptografia e sistemas de autorização (OAuth), parsers XML.

Para garantir o processamento de um grande número de solicitações paralelas, o Node.js utiliza um modelo assíncrono de execução de código, baseado em processamento de eventos em modo não bloqueante e determinação de manipuladores de callback. Como métodos de multiplexação de conexões, são suportados métodos como epoll, kqueue, /dev/poll e select. Para a multiplexação de conexões, usa-se a biblioteca libuv, que é uma camada de abstração sobre libev em sistemas Unix e sobre IOCP no Windows. Para criar um pool de threads, a biblioteca libeio é utilizada, e para a execução de consultas DNS de maneira não bloqueante, o c-ares foi integrado. Todas as chamadas de sistema que causam bloqueio são executadas dentro do pool de threads e, assim como os manipuladores de sinais, transmitem o resultado de seu trabalho de volta através de um canal não nomeado (pipe). A execução de código JavaScript é garantida pela utilização do mecanismo V8 desenvolvido pela Google (adicionalmente, a Microsoft desenvolve uma versão do Node.js com o mecanismo Chakra-Core).

Essencialmente, o Node.js é semelhante aos frameworks Perl AnyEvent, Ruby Event Machine, Python Twisted e à implementação de eventos em Tcl, mas o ciclo de processamento de eventos (event loop) no Node.js é oculto do desenvolvedor e se assemelha ao processamento de eventos em uma aplicação web que funciona em um navegador. Ao escrever aplicativos para Node.js, é necessário considerar a especificidade da programação orientada a eventos; por exemplo, em vez de executar "var result = db.query('select..');" aguardando a conclusão e posterior processamento dos resultados, no Node.js utiliza-se o princípio da execução assíncrona, ou seja, o código é transformado em "db.query('select..', function (result) { processar resultado });", onde o controle é imediatamente transferido para o restante do código, e o resultado da consulta será processado conforme os dados forem recebidos.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster