Plataforma JavaScript Node.js 18.0 do lado do servidor disponível

Foi lançado o Node.js 18.0, uma plataforma para execução de aplicações de rede em JavaScript. O Node.js 18.0 é classificado como branch de suporte de longo prazo, mas esse status será atribuído apenas em outubro, após a estabilização. Node.js 18.x terá suporte até abril de 2025. A manutenção da ramificação LTS anterior do Node.js 16.x durará até abril de 2024, e do penúltimo ramo LTS 14.x até abril de 2023. A ramificação LTS 12.x será descontinuada em 30 de abril, e a ramificação de teste Node.js 17.x será descontinuada em 1º de junho.

Principais melhorias:

  • O mecanismo V8 foi atualizado para a versão 10.1, que é usada no Chromium 101. Em comparação com a versão 17.9.0 do Node.js, agora há suporte para recursos como os métodos findLast e findLastIndex para localizar elementos relativos ao final do uma matriz e a função Intl.supportedValuesOf. API Intl.Locale aprimorada. A inicialização de campos de classe e métodos privados foi acelerada.
  • A API experimental fetch() está habilitada por padrão, projetada para carregar recursos pela rede. A implementação é baseada no código do cliente HTTP/1.1 undici e é o mais próximo possível da API semelhante fornecida nos navegadores. Isso inclui suporte para as interfaces FormData, Headers, Request e Response para manipular solicitações HTTP e cabeçalhos de resposta. const res = aguarda fetch('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = aguarda res.json(); console.log(dados); }
  • Foi adicionada uma implementação experimental da API Web Streams, fornecendo acesso aos fluxos de dados recebidos pela rede. A API permite adicionar seus próprios manipuladores para trabalhar com os dados à medida que as informações chegam pela rede, sem esperar o download do arquivo inteiro. Os objetos agora disponíveis em Node.js incluem ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream e DecompressionStream.
  • A API Blob foi movida para estável, permitindo encapsular dados brutos imutáveis ​​para uso seguro em diferentes threads de trabalho.
  • A API BroadcastChannel tornou-se estável, permitindo organizar a troca de mensagens em modo assíncrono no formato “um remetente - muitos destinatários”.
  • Adicionado módulo experimental node:test para criar e executar testes em JavaScript que retornam resultados no formato TAP (Test Anything Protocol).
  • É fornecida a geração de assemblies prontos para Red Hat Enterprise Linux (RHEL) 8 e outras distribuições baseadas em Glibc 2.28+, incluindo Debian 10 e Ubuntu 20.04, bem como para macOS 10.15+. Devido a problemas com a compilação do mecanismo V8, a criação de compilações de 32 bits para Windows foi temporariamente interrompida.
  • Forneceu uma opção experimental para construir um executável Node.js com componentes selecionados pelo usuário inicializados na inicialização. Para definir os componentes iniciais, a opção “--node-snapshot-main” foi adicionada ao script de construção do configure, por exemplo, “./configure —node-snapshot-main=marked.js; nó de nome"

A plataforma Node.js pode ser usada tanto para suporte de aplicativos da Web no lado do servidor quanto para criar programas comuns de rede de clientes e servidores. Para ampliar a funcionalidade das aplicações para Node.js, foi preparado um grande acervo de módulos, onde você encontra módulos com implementação de servidores e clientes HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, módulos para integração com diversos frameworks web, manipuladores WebSocket e Ajax, conectores para SGBD (MySQL, PostgreSQL, SQLite, MongoDB), motores de templates, motores CSS, implementações de algoritmos criptográficos e sistemas de autorização (OAuth), analisadores XML.

Para lidar com um grande número de solicitações paralelas, o Node.js usa um modelo de execução de código assíncrono baseado no processamento de eventos sem bloqueio e na definição de manipuladores de retorno de chamada. Os métodos suportados para conexões de multiplexação incluem epoll, kqueue, /dev/poll e select. Para multiplexação de conexões, é utilizada a biblioteca libuv, que é um complemento da libev em sistemas Unix e do IOCP no Windows. A biblioteca libeio é usada para criar um pool de threads e c-ares é integrado para realizar consultas DNS em modo sem bloqueio. Todas as chamadas do sistema que causam bloqueio são executadas dentro do pool de threads e então, como manipuladores de sinal, passam o resultado de seu trabalho de volta por meio de um canal sem nome. A execução do código JavaScript é garantida através da utilização do motor V8 desenvolvido pelo Google (além disso, a Microsoft está desenvolvendo uma versão do Node.js com o motor Chakra-Core).

Em sua essência, o Node.js é semelhante aos frameworks Perl AnyEvent, Ruby Event Machine, Python Twisted e à implementação de eventos em Tcl, mas o loop de eventos no Node.js está oculto do desenvolvedor e se assemelha ao processamento de eventos em um aplicativo da web rodando no navegador. Ao escrever aplicativos para node.js, é necessário levar em consideração as especificidades da programação orientada a eventos, por exemplo, em vez de fazer “var result = db.query(“select..”);” com a espera pela conclusão do trabalho e posterior processamento dos resultados, o Node.js utiliza o princípio da execução assíncrona, ou seja, o código é transformado em “db.query(“select..”, function (result) {processamento de resultado});”, no qual o controle passará imediatamente para outro código, e o resultado da consulta será processado conforme os dados chegam.

Fonte: opennet.ru

Adicionar um comentário