O que é Node.js?
Node.js é um ambiente de execução Javascript (Javascript Runtime), ou seja não se trata de uma linguagem ou framework. Permite que códigos escritos na linguagem Javascript rodem na sua máquina em tempo de execução, (Runtime Environment).
Tradicionalmente há décadas estávamos habituados a ver código Javascript rodar de forma interpretada em navegadores web (browsers), na camada front-end da aplicação.
De maneira resumida, em uma aplicação web o front-end é a camada que roda no navegador, ou seja, no lado do cliente ou client-side.
O Google Chrome em seu lançamento, inovou na forma como os navegadores interpretavam e renderizavam o Javascript, lançando uma engine intitulada V8.
V8 é uma engine do Google de código aberto (open source) escrita em C++.
E foi à partir da engine V8 que posteriormente Ryan Dahl criou o Node.js, capaz de interpretar, compilar e otimizar o código Javascript. O resultado é a tradução direta do Javascript em código de máquina sem qualquer transformação, eliminando a necessidade de um interpretador e possibilitando ao Node.js elevada eficiência na execução e consumo de recursos.
Quais as vantagens do Node.js?
Utilização full-stack do Javascript, ou seja, a mesma linguagem de programação nas duas camadas da aplicação back-end e front-end, reduzindo consideravelmente a curva de aprendizado do desenvolvedor e proporcionando um desenvolvimento mais ágil.
O back-end é o server-side ou lado do servidor, responsável por receber as requisições do front-end, processá-las e devolver na forma de respostas.
Node.js utiliza troca de informações padronizada entre back-end e front-end através de JSON (JavaScript Object Notation).
"JSON é uma formatação leve de troca de dados. Para seres humanos é facil de ler e escrever. Para máquinas é fácil de interpretar e gerar."
Node.js é leve e multiplataforma, permitindo que projetos rodem em servidores abertos e com flexibilidade de Sistema Operacional, diminuindo consideravelmente custos com hardware e software.
Node.js é Perfeito para a criação de APIs e aplicações de tempo real por trabalhar com o processamento de um alto volume de requisições com baixo consumo de hardware. Utilizando bibliotecas como o Socket.io por exemplo, é possível criar aplicações em tempo real sem onerar demais o servidor.