Lançamento da plataforma JavaScript do lado do servidor Node.js 14.0

aconteceu liberar Node.js 14.0,plataformas para execução de aplicativos de rede em JavaScript. O Node.js 14.0 é um branch de suporte de longo prazo, mas esse status só será atribuído em outubro, após a estabilização. Node.js 14.0 será compatível ser realizado até abril de 2023. A manutenção da ramificação LTS anterior do Node.js 12.0 durará até abril de 2022, e do penúltimo ramo LTS 10.0 até abril de 2021. O suporte para o branch de teste 13.x terminará em junho deste ano.

O principal melhorias:

  • A capacidade de gerar em tempo real ou na ocorrência de certos eventos foi estabilizada relatórios de diagnóstico, que exibem eventos que ajudam a diagnosticar problemas como travamentos, degradação de desempenho, vazamentos de memória, carga pesada de CPU, saída de erro inesperada, etc.
  • Adicionado suporte experimental à API Armazenamento local assíncrono com a implementação da classe AsyncLocalStorage, que pode ser usada para criar estados assíncronos com manipuladores baseados em chamadas de retorno de chamada e promessas. AsyncLocalStorage permite armazenar dados enquanto uma solicitação da web está sendo processada, uma reminiscência do armazenamento local de thread em outros idiomas.
  • Removida mensagem de aviso sobre recurso experimental ao carregar módulos ECMAScript 6 conectado e exportado usando instruções de importação e exportação. Ao mesmo tempo, a implementação dos módulos ESM em si permanece experimental.
  • Motor V8 atualizado para versão 8.1 (1, 2, 3), que inclui novas otimizações de desempenho e recursos como o novo operador de concatenação lógica "??" (retorna o operando direito se o operando esquerdo for NULL ou indefinido e vice-versa), o operador "?." para uma verificação única de toda a cadeia de propriedades ou chamadas (por exemplo, “db?.user?.name?.length” sem verificações preliminares), o método Intl.DisplayName para obter nomes localizados, etc.
  • Foi realizada uma revisão da API Streams, visando melhorar a consistência das APIs Streams e eliminar diferenças no comportamento das partes básicas do Node.js. Por exemplo, o comportamento de http.OutgoingMessage é próximo de stream.Writable e net.Socket é semelhante a stream.Duplex. A opção autoDestroy é definida como “true” por padrão, o que significa chamar “_destroy” após a conclusão.
  • Adicionado suporte experimental à API WASI (Interface do sistema WebAssembly), fornecendo interfaces de software para interação direta com o sistema operacional (API POSIX para trabalhar com arquivos, soquetes, etc.).
  • Requisitos aumentados para versões mínimas compiladores e plataformas: macOS 10.13 (High Sierra), GCC 6, Windows mais recente 7/2008R2.

Lembre-se de que a plataforma Node.js pode ser usada tanto para suporte de aplicativos da Web no lado do servidor quanto para a criação de programas comuns de rede de clientes e servidores. Para expandir a funcionalidade dos aplicativos para Node.js, um grande número de coleção 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 modelo, 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. A biblioteca é usada para multiplexar conexões libuv, que é uma superestrutura sobre libev em sistemas Unix e sobre IOCP no Windows. Uma biblioteca é usada para criar um pool de threads líbio, para realizar consultas DNS em modo sem bloqueio está integrado c-ares. 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 é assegurada através da utilização de um motor desenvolvido pela Google V8 (Além disso, a Microsoft está desenvolvendo uma versão do Node.js com o mecanismo Chakra-Core).

Em sua essência, o Node.js é semelhante aos frameworks Perl AnyEvent, Máquina de eventos Ruby, Python Torcido и implementação eventos em Tcl, mas o loop de eventos em Node.js fica oculto para o desenvolvedor e se assemelha ao tratamento de eventos em um aplicativo da web executado em um 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 (resultado) {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