Neste breve post irei listar algumas as funcionalidades, vantagens e desvantagens de utilizar o Node.JS. Espero que essa lista ajude outros desenvolvedores a saber se o Node é a tecnologia correta para o projeto deles.
Funcionalidades do Node.js
O Node.js tem alguns recursos distintos. Aqui estão alguns exemplos desses recursos:
- I/O (entrada e saída) sem bloqueio: Garante performance.
- Engine JS rápido: aproveita a “corrida armamentista” dos navegadores (Google Chrome V8 e Microsoft Chakra).
- Linguagem expressiva e interpretada: você não perde tempo na configuração.
- Sólido e aprimorando o padrão de linguagem (ECMAScript).
- Gerenciador de pacotes incluso com um enorme número de pacotes (npm).
- O loop de eventos é o núcleo do Node.js e é uma ideia genial. No entanto, não use o Node.js para bloquear tarefas que exigem muito da CPU. O Node.js não lhe dará um aumento de desempenho para coisas desse tipo. O Node.js é mais adequado para material de I/O (entrada e saída) de informações como servidores da web.
Vantagens
O Node.js é uma das plataformas com maior crescimento na web, segue abaixo alguns dos motivos pelo qual isso acontece:
- Desenvolvimento mais rápido devido ao grande número de módulos e código reutilizáveis que se pode obter pelo meio do npm.
- Comete-se menos erros e é possível ser mais produtivo pois é uma linguagem no front e back-end.
- Tempo de resposta de rápido. Melhores chances de agradar os clientes.
- Redução do tamanho da equipe e a sobrecarga de comunicação (JavaScript fullstack).
- Reduzir a dependência de outras equipes (por exemplo, equipes de API de back-end).
- Capacidade de reutilizar código no navegador e no servidor.
Desvantagens
O Node.js nem sempre é a melhor escolha de design. Como a maioria das coisas na vida, o Node.js tem algumas desvantagens. O node pode não ser um bom ajuste devido aos seguintes motivos:
- Os vazamentos de memória em processos de execução longa com o Node são piores do que em ambientes de navegador de execução curta, como o JavaScript rodando no navegador.
- O loop de eventos torna o tratamento de erros assíncrono mais difícil do que o tratamento de erros síncronos.
- Não há nenhum benefício para tarefas ligadas à CPU.
- É preciso pensar na escalabilidade do projeto desde o início para desenvolver sistemas distribuídos escalonáveis sem monitoração constante do estado da aplicação.
- É uma linguagem não tipada, mas possível com o TypeScript, e com isso tem as vantagens e desvantagens de se trabalhar neste formato.