A tecnologia Node.js é um ambiente de execução do JavaScript voltado para o Server Side Render (SSR), não dependendo de um navegador.
Entre as suas características está a utilização de um motor V8, single-thread. No decorrer desse artigo, você compreenderá com mais profundidade o que é Node.js. esse ecossistema maravilhoso.
O artigo será bem teórico, mas, por meio dele, você entenderá porque o Node.js funciona dessa forma. 🙈
O que é V8
Você provavelmente já ouviu que a tecnologia Node foi construída no motor JavaScript V8 do Google Chrome. Mas afinal, o que é esse V8?
Ele é um motor open-source do JavaScript de alto desempenho do Google. Foi escrito na linguagem de programação C++. Apesar de ser do Chrome, é utilizado em ambientes similares e não precisa de um navegador para rodar, podendo ser executado de forma independente.
O V8 foi projetado para aumentar o desempenho de execução do JavaScript em navegadores web, convertendo o código de alto nível para o de baixo nível (linguagem de máquina).
Essa compilação é realizada em tempo de execução, o famoso Just In Time — responsável por buscar a precisão realizando as execuções conforme a demanda, aumentando a eficiência e reduzindo custos.
O que é single-thread
Basicamente, single-thread significa que rodará apenas uma requisição por vez, por isso o tempo de processamento não pode demorar e deve ser não bloqueador (como ficar esperando o banco de dados). Por isso, qualquer processamento demorado deve ser delegado para outro processo.
Eis o grande pulo do gato na tecnologia Node.js, pois ele usa diversas threads internamente por conta do V8, porém isso é exposto ao JavaScript.
O responsável por essa proeza é o Event Loop — uma ferramenta que agrega diversas threads para otimizar o processamento. Quando precisa realizar uma operação mais pesada, o Event Loop solicita uma nova thread com um callback para cuidar daquela operação. Ele gerencia quando determinada função deverá executar.
Exemplo: temos diversas pilhas de operações na stack para serem executadas. Se essa operação for rápida, o Event Loop vai simplesmente executá-la e ir para a próxima (single-thread, uma por vez).
Mas caso essa operação seja considerada longa, o Event Loop irá solicitar uma nova thread com um callback (chamada de retorno) para ir rodando em segundo plano. Enfim, o Event Loop prossegue na execução de outras operações.
Quando aquela operação longa for concluída, a função callback será acionada e aguardará o Event Loop finalizar a operação que ele está realizando no momento para voltar à stack e ser executada.
Vantagens e desvantagens do Node.js
Vantagens
Altamente escalável, o Node.js utiliza JavaScript, multiplataforma, desenvolvimento e tempo de resposta rápido e capacidade de reutilizar código.
Desvantagens
O Loop de Eventos torna o tratamento de erros mais difícil, não é tipado (mas você resolve isso utilizando o Node com o TypeScript).
Algumas empresas que utilizam o Node.js
Essas são algumas empresas que utilizam o Node, segue a lista abaixo:
- Netflix;
- Paypal;
- Uber;
- Udemy;
- IBM;
- LinkedIn;
- Trivago;
- Figma;
- NASA.
Conclusão
É imprescindível que um(a) desenvolvedor(a) JavaScript conheça o Node.js. A compreensão desse ecossistema irá te auxiliar no desenvolvimento dos próximos projetos, pois você entende como a tecnologia Node.js funciona e, por consequência, a melhor forma de usufruir desses benefícios.
Agora que você já concluiu a leitura, que tal colocar a mão na massa (ou no código) e responder aos testes técnicos da Coodesh? Somos uma plataforma de recrutamento e de code assessment. Confira aqui.