Intro
O NodeJS é um interpretador Javascript (js) que não depende do navegador, criando a possíbilidade de executar os códigos js em outros ambientes. A maioria dos navegadores tem internamente um interpretador javascript no seu core por isso são capazes de interpretar.
Falar de NodeJS é falar de Javascript. Ele revolucionou o Javascript pois trouxe essa linguagem para fazer muito mais do que criar frontend web e efeitos visuais.
Agora podemos criar:
- Aplicações backend
- CLIs
- Aplicações desktop
- Inteligência Artificial
- Etc
O V8 é o motor Javascript da google que está presente no google chrome e é usado pelo NodeJS. É responsável por entender a linguagem.
Algumas bibliotecas aumentam as funcionalidades da linguagem, como por exemplo a libuv com foco em comunicação E/S assíncrona que permitem usar o nodejs para desenvolver backends.
Vantagens do node
- Leve.
- Usa pouca memória.
- Bom aproveitamento de CPU.
- Ecosistema de bibliotecas, módulos e plugins gigantesco e uma comunidade muito ativa.
- Desempenho assíncrono e não bloqueante sendo ótimo para intensos I/O como chats, jogos, streamings, etc, pois gerencia com eficiência multiplas conexões.
- Ótima escalabilidade por ter uma arquitetura baseada em eventos.
- Facilitade no desenvolvimento em tempo real.
- Fácil deploy.
- Muita demanda de profissionais no mercado.
- Usada no front e no backend podendo manter uma aplicação full stack javascript.
Desvantagens
- Não é a linguagem com bom desempenho para operações computacionais pesadas que envolvem muitos cálculos. Calculos muito pesados pode bloquear o loop de eventos degradando mais o desempenho da aplicação como um todo.
- Em aplicações de larga escala gerenciar é necessário que o código seja otimizado para não ter vazamento de memória.
- Padronização de código exige um esforço maior, pois o javascript oferece muita flexibilidade.
- Não é uma linguagem fortemente tipada aumentando as chances de erros, apesar do typescript mitigar isso.
- Ampla gama de biblicas difícil de serem auditadas, podendo sofrer com ataques. É necessário um certo cuidado ao escolher as bibliotecas.