Workshop: Deploy descomplicado de aplicações em VPS 🚀

Como criar servidor em localhost Node.js

Diferente dos servidores tradicionais, por padrão, o Node.js usa uma única thread com event loop para lidar com múltiplas requisições. Compreender essa arquitetura é essencial para quem busca aprender como criar servidor em localhost Node.js, garantindo eficiência e escalabilidade mesmo em aplicações simples.
Publicado em 19/07/2024

Atualizado em 27/08/2025
Node.JS na Hospedagem Web

Por mais técnico e burocrático que possa parecer, a escolha da stack tecnológica é uma decisão que impacta toda a sua operação: da produtividade da equipe até a performance da aplicação e a capacidade de escalar a infraestrutura.

É por isso que, antes de entender como criar servidor em localhost Node.js, você precisa entender o que é essa tecnologia, como ela funciona e, é claro, quais são os desafios e benefícios de seguir essa alternativa.

O que acha de tirar todas essas dúvidas agora mesmo? Continue a leitura e confira!

O que é Node.js?

O Node.js é um ambiente de execução (runtime environment) de JavaScript do lado do servidor (server-side), construído sobre o motor V8 do Google Chrome.

Sua principal proposta de valor, que o distingue de outras tecnologias de back-end, reside em sua arquitetura orientada a eventos e seu modelo de entrada e saída (E/S ou I/O) não bloqueante.

Vamos explicar um pouco mais: quando qualquer operação de I/O é feita, como uma consulta a um banco de dados ou a leitura de um arquivo, o Node.js delega essa tarefa ao sistema operacional e continua a processar outras requisições.

Quando essa operação é concluída, um evento de callback é adicionado à fila de eventos, que será processado pelo loop assim que possível. Essa arquitetura torna o Node.js mais eficiente para lidar com inúmeras conexões simultâneas.

Pré-requisitos para criar um servidor em Node.js

Mas antes de qualquer mudança, é preciso configurar o ambiente para um desenvolvimento realmente eficiente.

Instalação do node.js e gerenciamento com NVM

O primeiro passo é a instalação do próprio Node.js. Porém, em um ambiente profissional, onde você pode trabalhar em múltiplos projetos com diferentes requisitos de versão, a instalação direta pode se tornar um problema.

A melhor prática é utilizar um gerenciador de versões como o NVM (Node Version Manager). O NVM permite que você instale e alterne entre diferentes versões do Node.js com um simples comando, garantindo que cada projeto utilize a versão exata com a qual foi desenvolvido, e assim evitando conflito de compatibilidade.

NPM: o gerenciador de pacotes do ecossistema

Juntamente com o Node.js vem o NPM (Node Package Manager), o maior repositório de pacotes de software do mundo.

Essa é a ferramenta utilizada para gerenciar as dependências do seu projeto. Através do arquivo {package.json}, que funciona como o manifesto do projeto, você declara todas as bibliotecas e frameworks de que sua aplicação precisa.

Ao executar o comando {npm install}, o NPM baixa e instala todas essas dependências na pasta {node_modules}, garantindo que o ambiente se reproduza em qualquer máquina.

Ambiente de desenvolvimento e controle de versão

O uso de uma IDE (Ambiente de Desenvolvimento Integrado), como o Visual Studio Code, pode facilitar bastante a vida do desenvolvedor, principalmente em servidores de teste criados em localhost, já que oferece recursos como depuração, autocompletar e integração com outras ferramentas. 

No entanto, não é um pré-requisito para criar um servidor em Node.js: muitos servidores reais nem sequer utilizam ambiente visual e são acessados apenas via terminal.

Da mesma forma, o uso de sistemas de controle de versão, como o Git, não é obrigatório, mas é altamente recomendado quando o objetivo é desenvolver sistemas mais complexos, colaborar com outras pessoas ou manter um histórico organizado das alterações. 

Em resumo, tanto IDEs quanto Git são opcionais, mas podem ser interessantes para quem deseja ter mais praticidade no desenvolvimento e gerenciamento do projeto.

Criando seu primeiro servidor em localhost

Um jeito simples de criar seu primeiro servidor em localhost é utilizando o framework Express.js, bastante popular no ecossistema Node.js. 

Vale destacar que esse tipo de configuração é indicada principalmente para testes e aprendizado — em produção, é importante considerar práticas e ferramentas adicionais para garantir segurança, escalabilidade e desempenho.

O passo a passo é bem simples:

  • Inicialize o projeto: abra seu terminal, crie um novo diretório para o projeto e, dentro dele, execute o comando {npm init -y}. Isso criará um arquivo package.json padrão;
  • Instale o Express.js: execute o comando {npm install express}. O NPM irá baixar o framework e adicioná-lo como uma dependência no seu package.json;
  • Crie o arquivo do servidor: crie um arquivo chamado server.js (ou index.js) e adicione o seguinte código:

// Importa o framework Express

const express = require(‘express’);

// Inicializa a aplicação Express

const app = express();

// Define a porta em que o servidor irá rodar

const PORT = 3000;

// Cria uma rota GET para o caminho raiz (‘/’)

app.get(‘/’, (req, res) => {

  res.send(‘Servidor Node.js com Express está no ar!’);

});

// Inicia o servidor e o faz “escutar” por requisições na porta definida

app.listen(PORT, () => {

  console.log(`Servidor rodando em http://localhost:${PORT}`);

});

  • Execute o servidor: no terminal, execute o comando node server.js. Você verá a mensagem de confirmação no console;
  • Acesse no navegador: abra seu navegador e acesse o endereço http://localhost:3000. Você verá a mensagem “Servidor Node.js com Express está no ar!”. Você acabou de criar e executar seu primeiro servidor Node.js.

Estrutura de arquivos recomendada para projetos Node.js

Para garantir que o projeto seja realmente escalável, a organização precisa ser parte do processo e, por isso, você pode seguir uma estrutura mais ou menos assim:

  • /node_modules: diretório gerenciado pelo NPM que contém todas as dependências do projeto. Esse diretório não deve ser incluído no controle de versão (deve estar no .gitignore);
  • /src (ou /app): contém todo o código-fonte da sua aplicação, separado por responsabilidades para manter a organização;
  • /controllers: onde reside a lógica de negócio principal. As funções aqui são chamadas pelas rotas e orquestram as ações necessárias para responder a uma requisição;
  • /routes: define os endpoints da sua API ou as rotas do seu site. Cada arquivo aqui mapeia uma URL e um método HTTP (GET, POST, etc.) a uma função do controller correspondente;
  • /models (ou /services): camada responsável pela interação com o banco de dados ou com outras APIs externas;
  • /middleware: contém funções que processam a requisição antes que ela chegue à sua rota final. São usadas para tarefas como autenticação, logging ou validação de dados;
  • /public: para armazenar arquivos estáticos que serão servidos diretamente ao cliente, como folhas de estilo (CSS), imagens e scripts de front-end;
  • /config: armazena arquivos de configuração, como credenciais de banco de dados ou chaves de API para diferentes ambientes (desenvolvimento, produção);
  • .env: arquivo para armazenar variáveis de ambiente sensíveis (como senhas e chaves de API), que não devem ser versionadas no Git;
  • server.js (ou index.js): o ponto de entrada da aplicação, responsável por inicializar o servidor e carregar as rotas e configurações;
  • package.json e package-lock.json: os arquivos manifesto do projeto, que definem suas propriedades e dependências.

Benefícios do Node.js em desenvolvimento web

Ainda não se convenceu sobre essa alternativa? Sem problemas, mas separamos alguns dos diferenciais para você levar em consideração.

Alta performance para operações de E/S (I/O)

Conforme explicado, o modelo de I/O não bloqueante faz com que o Node.js se destaque em aplicações que dependem de muitas operações de entrada e saída.

Aqui estamos falando de APIs que consultam bancos de dados, aplicações de chat em tempo real que mantêm conexões abertas, e serviços de streaming de dados.

Para essas cargas de trabalho, o Node.js pode lidar com um número muito maior de usuários simultâneos com menos recursos de hardware em comparação com plataformas de I/O bloqueante.

O ecossistema NPM e a produtividade no desenvolvimento

O NPM é, sem dúvida, um acelerador de desenvolvimento, já que reúne milhares de bibliotecas criadas e compartilhadas pela comunidade. 

No entanto, é importante observar que no ecossistema Node.js muitas vezes ocorre justamente o contrário do ditado “não reinventar a roda”: existem diversos pacotes diferentes para resolver os mesmos problemas, alguns apenas renomeados ou lançados como v2, v3, v4. Há até casos de bibliotecas que replicam funcionalidades já existentes no próprio JavaScript.

Ou seja, o NPM oferece uma infinidade de opções, mas cabe ao desenvolvedor avaliar bem o que faz sentido adotar, priorizando pacotes consolidados e evitando dependências desnecessárias.

Unificação da stack tecnológica com JavaScript

A possibilidade de utilizar JavaScript tanto no front-end quanto no back-end oferece uma vantagem operacional para o seu negócio.

Afinal, isso permite a formação de equipes “full-stack” totalmente integradas, onde os desenvolvedores podem transitar entre as duas camadas da aplicação com mais facilidade.

A unificação da linguagem simplifica o compartilhamento de código, a padronização de ferramentas e a gestão do conhecimento dentro da equipe.

Do localhost para a hospedagem: como levar seu projeto adiante

Levar sua aplicação Node.js do ambiente de desenvolvimento local para um servidor de produção (como um VPS ou um ambiente de Cloud) envolve alguns passos cruciais.

Primeiramente, o código é transferido para o servidor, geralmente através de um {git pull} a partir do seu repositório.

Em seguida, as dependências de produção são instaladas com o comando {npm install –production}. O passo mais importante, no entanto, é garantir que sua aplicação continue rodando de forma persistente.

Diferente do PHP sob o Apache, um script Node.js executado diretamente pelo terminal (por exemplo, com {node server.js}) será interrompido assim que o terminal for fechado. 

Por isso, em ambientes de produção, não é indicado rodar o servidor apenas com o comando do Express. A prática recomendada é utilizar um gerenciador de processos, como o PM2, que mantém a aplicação ativa, gerencia logs e facilita reinicializações automáticas.

Na prática, ele mantém a sua aplicação Node.js ativa em segundo plano, monitora seu estado e reinicia automaticamente em caso de falha.

Desde a criação de APIs ágeis até a construção de sistemas em tempo real, o Node.js fornece as ferramentas necessárias para que desenvolvedores e empresas construam produtos digitais escaláveis.

No entanto, é importante destacar que não basta pegar um servidor simples criado em localhost e colocá-lo em produção apenas com o PM2. Um ambiente produtivo exige cuidados adicionais de segurança. 

Por exemplo, ao usar o Express, uma boa prática é incluir o {helmet.js}, uma biblioteca que ajuda a proteger o servidor configurando de forma adequada os cabeçalhos HTTP e reduzindo vulnerabilidades comuns. Esse tipo de medida garante uma base mínima de blindagem antes de expor a aplicação para o público.

Acredita que esse é o caso para o seu negócio? Então conheça os planos da KingHost!

O que você achou deste conteúdo?

O que você achou deste conteúdo?

foto perfil
Daiane
Daiane Corrente
Daiane é formada em Publicidade e Propaganda pela UNIJUÍ, com especialização em Marketing pela USP e graduanda em Análise e Desenvolvimento de Sistemas na Uniasselvi. Ela une comunicação, marketing e tecnologia para criar conteúdos estratégicos, informacionais e otimizados para o blog da KingHost.
Daiane
Daiane Corrente
Daiane é formada em Publicidade e Propaganda pela UNIJUÍ, com especialização em Marketing pela USP e graduanda em Análise e Desenvolvimento de Sistemas na Uniasselvi. Ela une comunicação, marketing e tecnologia para criar conteúdos estratégicos, informacionais e otimizados para o blog da KingHost.

Compartilhe esse conteúdo com alguém que possa gostar também

Receba todo mês conteúdos
incríveis como esses para
seguir evoluindo

Mensagens para você