O que é
Node.js
é um ambiente de execução JavaScript assíncrono e orientado a eventos. Ele foi projetado para construir aplicações escaláveis e de alta performance, principalmente no lado do servidor (backend). Ele permite que você use JavaScript fora do navegador, no lado do servidor.
Principais Características
- V8 Engine:
Node.js
é construído sobre o motor V8 do Chrome, que compila JavaScript diretamente para código de máquina, oferecendo alta performance.
- Modelo Assíncrono e Orientado a Eventos: A arquitetura do
Node.js
é assíncrona, o que significa que ele não espera operações I/O (Input/Output) serem concluídas para continuar a execução. Isso resulta em aplicações mais rápidas e eficiente.
- NPM (Node Package Manager):
Node.js
vem com o NPM, um dos maiores repositórios de pacotes open source do mundo. Ele facilita o gerenciamento de dependências e a reutilização de código.
- Escalabilidade:
Node.js
é ideal para construir aplicações escaláveis, como servidores web e APIs, devido ao seu modelo de eventos não bloqueantes.
Funcionamentos
- Single Thread
- O NodeJS é single-threaded, o que significa que ele usa uma única thread principal para executar o código JavaScript.
- Ele lida com todas as requisições, funções e operações de I/O (entrada e saída) usando essa única thread.
- Non-Blocking I/O:
- Em vez de bloquear a execução enquanto aguarda a conclusão de uma operação (como ler um arquivo ou consultar um banco de dados), o NodeJS delega essas tarefas e continua processando outras operações.
- Isso significa que uma operação não bloqueia a execução das próximas.
- Call Stack:
- A Call Stack é onde as funções que precisam ser executadas são armazenadas.
- Cada função é colocada no topo da pilha e, quando termina, é removida da pilha.
- Event Loop
- O Event Loop é o componente que monitora a Call Stack e a fila de eventos.
- Se a Call Stack estiver vazia, ele pega a próxima tarefa da fila de eventos e a coloca na Call Stack para ser executada.
- Ele garante que as operações assíncronas (como leitura de dados) sejam tratadas eficientemente e que o sistema nunca fique parado.
- Event Queue:
- A Event Queue é onde as operações assíncronas são armazenadas enquanto aguardam serem processadas.
- O Event Loop monitora essa fila e move as tarefas prontas para a Call Stack.
Requisições HTTP
- Criando um Servidor HTTP
Para criar um servidor HTTP no NodeJS, você usa o módulo embutido http
. Com ele, você pode configurar um servidor que escuta por requisições em uma porta específica.
import http from 'node:http'
const servidor = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World!');
});
const porta = 3000;
servidor.listen(porta, () => {
console.log(`Servidor rodando em <http://localhost>:${porta}`);
})