Header Ads

O que há de novo no Node.js 16?

O Node. js lançou sua versão principal mais recente. Lançado em abril de 2021, o v16 é o novo “ atual ” liberação. Em outubro de 2021, será promovido para a versão Long Term Support (LTS) com manutenção continuando em 2024.

O processo de lançamento do Node. js vê atualizações da “ atual ” branch fundido no próximo lançamento de recurso principal. Consequentemente, o v16 traz vários recursos do v15 recentemente adicionados ao que eventualmente se tornará o branch LTS. Embora já esteja disponível na v15, as mudanças são novas para usuários LTS.

Atualizações do mecanismo JavaScript

O Node. js 16 vem com a v9.0 do mecanismo V8 JavaScript. Isso substitui o V8 8.6 no Node. js 15. Nos meses entre os dois lançamentos, o V8 lançou vários novos recursos junto com melhorias significativas de desempenho.

Uma dessas melhorias são chamadas mais rápidas para funções com um comprimento de lista de argumentos incompatível. JavaScript permite que você passe um número diferente de argumentos para a assinatura da função:

demonstração da função & # 40; a, b, c & # 41; & # 123; // ... & # 125;   // Demonstração OK & # 40; 1 & # 41 ;;   // Demonstração também OK & # 40; 1,2,3,4 & # 41 ;;

A primeira variante é comumente usada quando um parâmetro é opcional. A última variante às vezes ocorre quando uma função é refatorada para remover um argumento. Este tipo de código incorria em uma penalidade de desempenho antes do V8 8.7. O retrabalho dos componentes internos usados ​​para lidar com comprimentos de lista de argumentos incompatíveis praticamente eliminou a sobrecarga.

Outra melhoria de desempenho diz respeito à propriedade super. Este recurso JavaScript permite que você acesse o pai de uma classe que está usando herança. As chamadas para super costumavam ser não otimizadas, gerando uma chamada em tempo de execução a cada uso. O V8 v9 despachou mudanças permitindo acesso a superpropriedade para executar ordens de magnitude mais rapidamente. Essa otimização agora está disponível para usuários Node. js.

Finalmente, o V8 v9 vem com um novo recurso significativo para expressões regulares. Agora você pode solicitar uma matriz contendo as posições inicial e final de cada grupo de captura correspondente. Isso é habilitado usando o sinalizador / d com RegExp. Você pode acessar a matriz de índices por meio da propriedade indices do objeto de resultado de execução.

const regex = / & # 40; a & # 41; & # 40; b & # 41; / d; const match = regex. exec & # 40; " xy " & # 41 ;;   console. log & # 40; match. indices & # 91; 0 & # 93; & # 41 ;; // [0, 2] console. log & # 40; match. indices & # 91; 1 & # 93; & # 41 ;; / / [0, 1] console. log & # 40; match. indices & # 91; 2 & # 93; & # 41 ;; // [1, 2]

O primeiro item na matriz representa a correspondência inteira. Os elementos subsequentes fornecem as posições de cada grupo de captura correspondente na string de entrada.

npm v7

O Node. js v16 apresentará o npm v7 ao canal LTS. O npm passou por uma refatoração interna substancial para melhorar o desempenho e revisar o fluxo de trabalho das dependências de pares.

Dependências de pares agora são instaladas automaticamente junto com dependências regulares. Esta pode ser uma alteração significativa em alguns fluxos de trabalho, embora as interrupções sejam geralmente mínimas. ”

Há também um novo formato para package-lock. json que permite compilações determinísticas mais confiáveis. Agora inclui tudo o que o npm precisa para reconstruir sua árvore de pacotes do zero. Se você estiver migrando do Yarn, o npm &’ s ganhou suporte para arquivos yarn. lock também.

Outras mudanças notáveis ​​

v16 promove a API Timers Promises ao status estável. Esta API fornece funções de cronômetro JavaScript que retornam promessas nativas. Funções como setTimeout () geralmente aceitam um retorno de chamada. Isso pode ser complicado quando usado com código assíncrono moderno.

// Oldfunction demoOld & # 40; & # 41; & # 123; setTimeout & # 40; & # 40; & # 41; = > & # 123; console. log & # 40; " O temporizador expirou. " & # 41 ;; & # 125;, 5000 & # 41 ;; & # 125;   // Newimport & # 123; setTimeout & # 125; de " temporizadores / promessas & quot ;; demonstração da função assíncronaNovo & # 40; & # 41; & # 123; aguarde setTimeout & # 40; 5000 & # 41 ;; console. log & # 40; " Timer expirou. " & # 41 ;; & # 125;

Usar promessas torna o código mais legível quando combinado com async / await. Esperar por um cronômetro parece uma chamada tradicional para dormir em um idioma síncrono.

O Node. js também adicionou suporte experimental para a API Web Crypto. Esta especificação W3C tem como objetivo fornecer aos aplicativos da web acesso a um conjunto elementar de funções criptográficas. A API oferece geração de hash e verificação de assinatura junto com utilitários de criptografia e descriptografia.

Oferecer suporte para Web Crypto em Node. js melhora a interoperabilidade entre JavaScript em servidores e JavaScript em navegadores da web. A implementação do Node estende vários aspectos da especificação W3C e inclui suas próprias variações de alguns objetos.

Apple Silicon

Uma mudança completamente nova na v16 é a publicação de compilações para os processadores Apple Silicon. Isso deve melhorar o desempenho no novo hardware Mac. O Node. js será executado nativamente no Apple M1, em vez de usar a camada de emulação Rosetta.

Os usuários que instalarem através do mecanismo de distribuição tarball precisarão escolher entre os pacotes darwin-x64 (Intel) ou darwin-amd64 (Apple Silicon). Se você usar o utilitário de instalação do macOS, será fornecido um único download com suporte para ambas as arquiteturas.

Suspensões

Sendo uma versão principal, a v16 vem com algumas depreciações e remoções. Você pode encontrar a lista completa no changelog completo.

Uma depreciação notável é a intenção de remover o acesso a vários módulos principais via process. binding (). Essa chamada fornece um mecanismo para acessar os objetos C ++ subjacentes por trás da implementação Javacript dos módulos. Vinculações para módulos, incluindo crypto, v8, async_wrap e url foram descontinuadas e podem ser removidas no futuro.

Em outros lugares, a opção recursiva para a função de remoção de diretório fs. rmdir () foi descontinuada. O novo código deve usar a função alternativa fs. rm (path,). Essa alteração foi feita para alinhar melhor o Node. js com o comando rmdir Unix e rmdir () - funções equivalentes em outras linguagens de programação.

Resumo

Node. js v16 é um novo lançamento importante que trará vários novos recursos para o canal LTS enquanto lança os recursos JavaScript V8 mais recentes. Isso vem junto com o npm v7 e o lançamento de compilações nativas do Apple Silicon.

Você pode obter a nova versão por meio do canal atual, seguindo os documentos de instalação no site Node. js. A versão 16 substituirá a versão 14 como versão LTS em 26 de outubro de 2021.

A versão atual do Node. js v15 permanecerá com suporte até 1º de junho de 2021. Os usuários devem tentar atualizar para a v16 o mais rápido possível. A filial LTS atualmente ativa, v14, será mantida até o final de abril de 2023.

Nenhum comentário