Pular para o conteúdo
Cursos

DevClub

LógicaFront-endBack-endMobile

IA Club

IA na prática
Estudar programaçãoEstudar IA

Aula 1 de 6

Node.js e runtime: seu primeiro programa fora do navegador

Entenda o papel do runtime Node.js, execute um arquivo pelo terminal e siga o caminho de entrada, processamento e saída de um programa.

36 minutos · leitura + prática · nível iniciante

Ao terminar esta aula, você vai conseguir

  • Diferenciar JavaScript, navegador e runtime Node.js
  • Executar um arquivo com o comando node
  • Reconhecer entrada, processamento e saída em uma tarefa de servidor
Uma requisição sai do navegador, passa pelo Node.js e volta como JSON.

JavaScript é a linguagem; Node.js é um runtime, o ambiente que lê e executa essa linguagem fora do navegador. Essa diferença parece detalhe, mas evita uma confusão frequente: instalar Node não cria uma nova linguagem e abrir um arquivo com Node não cria uma página. O runtime oferece recursos próprios para processos, arquivos e rede, que vamos usar ao longo do curso.

Pense numa receita e em duas cozinhas. A receita é o JavaScript; navegador e Node.js são cozinhas com utensílios diferentes. A mesma conta funciona nas duas, mas document.querySelector pertence à cozinha do navegador, enquanto process.argv pertence à do Node. A analogia termina aqui: runtime não é um lugar físico, e sim software com APIs e regras de execução.

Execute um arquivo e observe a saída

Crie uma pasta, abra o terminal nela e confirme a instalação:

bash
node --version

Agora crie app.js:

js
const produto = 'Teclado';
const preco = 180;

function resumirPedido(nome, valor) {
  return `${nome}: R$ ${valor.toFixed(2)}`;
}

console.log(resumirPedido(produto, preco));

Execute com node app.js. A saída esperada é Teclado: R$ 180.00. O terminal iniciou um processo, Node carregou o arquivo, avaliou as declarações, chamou a função e escreveu a saída. Quando não havia mais trabalho pendente, o processo terminou. Esse ciclo curto já contém a base de um programa de servidor; a diferença é que um servidor mantém trabalho pendente enquanto aguarda pedidos.

O caminho mental: entrada, regra e saída

Um back-end recebe uma entrada, aplica regras e produz uma saída. A entrada pode vir de argumentos do terminal, de um arquivo ou de uma requisição HTTP. A regra é a parte que decide o que fazer. A saída pode ser uma linha no terminal, um arquivo atualizado ou uma resposta enviada ao cliente.

Leia um argumento com a API process:

js
const nome = process.argv[2] ?? 'visitante';
const mensagem = `Olá, ${nome}!`;

console.log(mensagem);

Salve como saudacao.js e rode node saudacao.js Ana. Você deve receber Olá, Ana!. Aqui process.argv[2] é a entrada, a template string faz o processamento e console.log entrega a saída. Se rodar sem nome, o operador ?? usa o valor alternativo.

O laboratório não finge ser um servidor

O laboratório desta página executa JavaScript em um sandbox do navegador. Ele não abre portas, não acessa process e não oferece as APIs do Node. O que ele permite treinar de verdade é a lógica pura: receber um objeto, verificar regras e devolver outro objeto. Essa lógica pode ser movida para um servidor porque não depende da tela nem do sistema operacional.

Mude pago para false e confirme o status 402. Depois volte para true, troque itens por 0 e confirme o status 400. Cada alteração tem um resultado observável; isso é mais útil do que apenas ler a função.

Observe também o encerramento do processo. Um script comum termina quando não há mais trabalho agendado; um servidor continua porque a escuta de rede permanece ativa. Essa diferença ajuda a diagnosticar programas que parecem “presos”: antes de forçar a saída, descubra qual recurso ainda está aberto. Para esta aula, rode o comando, confira a linha esperada e veja o prompt do terminal retornar.

Erro comum: misturar APIs dos ambientes

Se você colocar document.querySelector em app.js e executar com Node, verá um erro porque document não existe nesse runtime. Se colar process.argv num script comum do navegador, ocorrerá a confusão inversa. Antes de usar uma API, pergunte: ela pertence à linguagem ou ao ambiente?

Na missão, crie saudacao.js, rode com dois argumentos e guarde as duas saídas. O critério de conclusão é simples: mudar somente o argumento precisa mudar somente o nome exibido. Na próxima aula, vamos dividir programas maiores em módulos e registrar as decisões do projeto no package.json.

Laboratório ao vivo

Decisão de pedido com JavaScript

Este sandbox roda no navegador, não no Node.js. Altere o pedido e execute para testar a mesma lógica pura de decisão que poderia viver num servidor.

Pronto para testar
Resultado

Pare e pense

Qual é o papel do Node.js ao executar um arquivo JavaScript?

Escolha uma resposta
Missão da aula

Faça sem copiar

Crie saudacao.js, leia um nome de process.argv e exiba uma saudação. Rode com dois nomes diferentes e confirme que cada saída contém o argumento recebido.

Fontes para consultar

Terminou a missão?

Marque apenas quando você conseguir explicar o conceito e concluir o desafio. O progresso fica salvo somente neste navegador.

Próxima: Módulos e package.json: organize o projeto Node.js →