Configurando um servidor local para desenvolvimento frontend 💾
Quando entramos no mundo de desenvolvimento web eventualmente vamos precisar configurar um servidor local. É muito comum no início do aprendizado, apenas abrir arquivos HTML no navegador. Mas eu, como desenvolvedor frontend, não posso simplesmente continuar abrindo o arquivo HTML diretamente do meu diretório em uma página web? Sim! No entanto, existem limitações que me impediria de criar um aplicativo ou uma página mais complexa.
Um servidor local me aproxima do ambiente de produção - ambiente o qual irá hospedar meu aplicativo (ou página) e será acessado pelos usuários finais - e também, habilita o browser a utilizar mais recursos do que se rodo o arquivo de um diretório comum.
Instalando o servidor
Existem inúmeros servidores e frameworks web gratuitos e de fácil instalação. Dentre os mais famosos posso citar: Apache, nginx e Puma. Cada um com a sua especificidade.
Como o meu objetivo é rodar uma aplicação JavaScript, usando React, vou utilizar o Express. Ele pode ser utilizado em conjunto com o Node.js para servir páginas estáticas. E este é o nosso objetivo.
Sendo assim, vou precisar instalar algumas outras ferramentas.
Instalando Node.js
Existem algumas maneiras de instalar o Node.js. É possível realizar a instalação simplesmente baixando o Node.js através do site oficial. A meu ver a maneira mais fácil é utilizar o Node Version Manager - nvm.
Após a instalação do nvm abri o terminal e digitei o seguinte comando para instalar a versão mais recente do Node.js:
nvm install node
Depois:
node -v
E a versão instalada foi v14.0.0
.
Pronto, agora posso seguir com a instalação do Express.
Instalando o yarn
yarn é um gerenciador de pacotes que me permite utilizar e compartilhar códigos de outros desenvolvedores de uma maneira super fácil. Vou utilizá-lo, pois facilita a instalação do Express, bem como de outros pacotes necessários durante o desenvolvimento com React.
No site oficial existem diferentes maneiras de como instalar o yarn, baseado no sistema operacional. Como estou em um macOS instalei utilizando o Homebrew:
brew install yarn
yarn instalado! Agora posso enfim instalar o Express.
Instalando Express
Primeiro, através do terminal, vou criar uma nova pasta para a minha aplicação:
mkdir ~/react-app
cd ~/react-app
Já dentro da pasta criada, vou iniciar o yarn
yarn init -y
Este comando cria o arquivo package.json
, responsável por organizar os pacotes instalados através do yarn.
Agora, vou instalar o Express
yarn add express
Express foi instalado com sucesso!
Configurando e iniciando meu servidor
Com o Express instalado vou criar o arquivo responsável por configurar e iniciar o servidor que irá servir o meu aplicativo React. Ainda dentro da pasta react-app
irei criar o arquivo index.js
:
Adicionei comentários ao código acima para que fique compreensível cada linha. Mas, este simples trecho de código, é responsável por servir o nosso aplicativo React.
Vou agora adicionar uma entrada script no arquivo package.json para que possamos iniciar nosso servidor.
O meu package.json até o momento está assim:
{
"name": "react-app",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"dependencies": {
"express": "^4.17.1"
},
"scripts": {
"start": "node index.js"
}
}
Adicionando o trecho "start": "node index.js"
me permite iniciar o servidor através do seguinte comando no terminal:
yarn start
E esta foi a resposta:
Ao abri meu navegador e acessar o endereço http://localhost:3000 vejo a seguinte mensagem:
Tudo como deveria ser! Nosso servidor está funcionando!! 🎉
Mas espera! Como vou rodar minha aplicação React!?
Como rodar minha aplicação React no servidor
Ao invés de simplesmente retornar uma mensagem do servidor quando acessar minha página no navegador, eu preciso retornar minha aplicação. Isso se dá através do arquivo index.html que criei anteriormente.
Primeiro, vou criar uma pasta chamada public/
que vai conter meu arquivo index.html
e também, meus arquivos Javascript.
mkdir public
Então, vou copiar o index.html para a pasta public
, que está dessa maneira:
Feito isso, preciso agora alterar o arquivo index.js
responsável por rodar o nosso servidor para que ao invés de retornar uma simples mensagem, ele possa retornar o nosso arquivo index.html
.
Adiciono o import da modulo path
que é necessário para ler as pastas do sistema:
E depois, substituo a mensagem de retorno pelo caminho do nosso arquivo index.html
:
Ficando assim:
E o resultado:
Aparentemente funcionou. Mas onde está o nosso botão em React!? 🤔 Com um pouco de pesquisa descobri que da maneira como carregamos o nosso index.html, não será possível carregar também os arquivos Javascript ou CSS, pois Express não consegue renderizar arquivos apenas com o método sendFile
.
Ainda é preciso fazer uma pequena mudança. Vou substituir a linha com o sendFile
por esta:
E ficou assim:
Pronto! Agora a minha página React está sendo apresentada diretamente de um servidor.
Próximos Passos
A seguir vou criar um aplicativo mais robusto, com componentes independentes, mas conectados através de um outro componente de hierarquia maior. O fato de rodar a página de um servidor me dá inúmeras opções as quais eu não tinha, por rodar diretamente do browser. Uma delas é fazer importações diretamente dos arquivos Javascript.
Se gostou desse artigo, se inscreva e receba semanalmente este e outros conteúdos diretamente no seu email. Sem spam! 😎
Compartilhe este artigo no Twitter.