Em abril de 2022, a versão NodeJS Node v18 foi lançada. A atualização do Node v18 foi uma das atualizações mais esperadas desde o Node v14, que adicionou a API de armazenamento local assíncrona, uma Web Assembly System Interface (WASI) e suporte para módulos ECMAScript.

A atualização v18 adiciona várias melhorias ao NodeJS, incluindo uma API de busca habilitada globalmente por padrão, suporte à API de fluxo da web e um módulo principal de execução de testes. Aqui abordamos a maioria das mudanças significativas no NodeJS na v18.

1. A API de busca

A API de busca fornece uma interface para acessar e manipular solicitações e respostas HTTP. Antes do NodeJS v18, as solicitações HTTP feitas com o NodeJS exigiam bibliotecas de terceiros como axios e busca de nó ou o complicado http ou https pacote.

O NodeJS v18 disponibiliza a API de busca no escopo global por padrão. A API de busca global elimina a necessidade de bibliotecas de terceiros como axios e o código detalhado associado ao https pacote ao buscar recursos de forma assíncrona em uma rede.

Aqui está um exemplo do uso da API:

const getDados = assíncronofunção () {
tentar {
const res = aguardam buscar("https://example.com/users");
const dados = aguardam res.json();
console.log (dados);
} truque (erro) {
console.registro(`Algo deu errado, ${erro}`);
}
};
Obter dados();

o Obter dados função acima envia um PEGUE pedido para buscar os recursos de " https://example.com/users". A API de busca também recebe um segundo parâmetro opcional, um objeto de opções. Os objetos de opções devem conter detalhes sobre a solicitação. Por exemplo:

const userData = {
nome: "Jon Snow",
idade: 25,
Gênero sexual: "M",
};
const postDados = assíncronofunção (dados) {
tentar {
const res = aguardam buscar("https://example.com/users", {
método: "PUBLICAR",
corpo: JSON.stringify (dados),
});
const respostaDados = aguardam res.json();
console.registro(
`A solicitação foi bem-sucedida, aqui estão os detalhes: ${responseData}`
);
} truque (erro) {
console.registro(`A solicitação não foi bem-sucedida, aqui estão os detalhes: ${erro}`);
}
};
postData (userData);

Embora a API de busca ainda seja experimental, deve funcionar bem para a maioria dos usuários.

2. Suporte para API de fluxos da Web

Pense em aplicativos multimídia ou em tempo real; este é um caso de uso principal da API de fluxos da web. A API de fluxos da Web é um conjunto de interfaces que permite a divisão programática de um grande recurso recebido por uma rede em pequenos pedaços e o processa pouco a pouco.

Um exemplo de stream é o corpo da resposta retornado por um buscar solicitar. O corpo da resposta é do tipo ReadableStream.

O NodeJS v18 expõe uma experimental implementação da API de fluxos da web. Com esta atualização, as APIs de fluxo da web agora estão disponíveis no cliente e no servidor, tornando o desenvolvimento mais simples.

Você pode encontrar uma lista dos fluxos atualmente suportados no notas oficiais de lançamento.

3. O Módulo Executor de Testes

Nas versões anteriores do NodeJS, o teste sem bibliotecas de terceiros era feito com o built-in afirmar biblioteca.

o afirmar biblioteca facilitou a escrita de testes simples, mas tinha limitações significativas que dificultavam o trabalho com vários conjuntos de testes. Essas limitações estimularam a necessidade de bibliotecas de terceiros como Jest para executar testes mais avançados.

O NodeJS v18 elimina a necessidade de bibliotecas de terceiros com a introdução do módulo principal de execução de testes do NodeJS. O executor de teste suporta recursos como subtestes, pular testes, testes de retorno de chamada, etc., assim como o Jest.

Para usar o executor de teste, você deve importar afirmar a partir de afirmar e teste a partir de nó: teste. Observe o "nó:" prefixo; é o novo protocolo do Node que distingue os pacotes principais do nó dos pacotes criados pelo usuário.

constafirmar = requer("afirmar");
const teste = exigir("nó: teste");

Aqui está um exemplo de um teste simples usando o módulo executor de testes:

teste("Verifique se as strings são iguais", (t) => {
assert.strictEqual("teste", "teste");
});

Os resultados do teste exibidos pelo executor de teste estarão em TAP (Protocolo de Teste de Qualquer Coisa) formato. Observe que esse recurso ainda é experimental e pode ser alterado a qualquer momento.

4. Outras atualizações e correções

A atualização do Node v18 também apresenta uma atualização do mecanismo v8 para a versão 10.1. O mecanismo v8 é o tempo de execução do JavaScript usado pelo NodeJS para executar o JavaScript.

A atualização v8 torna o métodos de matrizencontrarÚltimo e findLastIndex disponível no NodeJS e melhora o desempenho de campos de classe e métodos de classe privada.

O NodeJS também expõe as seguintes APIs no escopo global na atualização do Node v18:

  • Bolha
  • Canal de transmissão

Atualizando para o Node v18

Usando o Node v18, você pode testar um aplicativo inteiro sem bibliotecas externas, buscar recursos de forma assíncrona sem bibliotecas externas e ter fluxos da Web ativados em seu servidor.

No entanto, vale ressaltar que esses recursos ainda são experimentais e podem mudar a qualquer momento. Você pode atualizar para o NodeJS v18 usando o link oficial para baixar.