URLs Amigáveis com JavaScript Puro: Criando uma SPA sem frameworks usando a History API 🚀
Seu projeto ainda exibe páginas como contato.html, sobre.html ou produtos.html? 😬 Com apenas JavaScript Puro você consegue criar URLs amigáveis usando a History API, deixando seu projeto com aparência muito mais profissional, sem depender de React, Vue, Angular ou qualquer framework. Neste guia completo, você vai aprender como transformar URLs com extensões em URLs limpas e profissionais, criando uma Single Page Application (SPA) utilizando apenas recursos nativos do navegador.
Como criar URLs amigáveis com JavaScript Puro (sem React) 🚀
Com apenas JavaScript Puro você consegue criar URLs amigáveis usando a History API, deixando seu projeto com aparência muito mais profissional, sem depender de React, Vue, Angular ou qualquer framework.
URLs Amigáveis com JavaScript Puro: Criando uma SPA sem frameworks usando a History API 🚀
"A diferença entre um site amador e um site profissional muitas vezes está nos pequenos detalhes. Uma URL limpa, sem extensões .html, transmite profissionalismo e melhora a experiência do usuário. Com a History API do JavaScript, você pode transformar seu projeto em uma SPA sem depender de frameworks."
🚀 O que você vai aprender neste artigo
- O que são URLs amigáveis — conceitos e por que elas são importantes
- O problema das URLs com extensões — por que
.htmlno final é amador - O que é a History API — a ferramenta nativa do navegador para manipular URLs
- Como criar uma SPA com JavaScript puro — roteamento sem frameworks
- Como configurar o Apache e Nginx — para suportar URLs amigáveis em produção
- Boas práticas de desenvolvimento web — código limpo e organizado
- Exemplos práticos — código completo para você copiar e colar
📌 Conceitos abordados
- URL Amigável — URLs limpas sem extensões ou parâmetros desnecessários
- History API — API nativa do navegador para manipular o histórico
- SPA (Single Page Application) — aplicação que carrega uma única página e atualiza o conteúdo dinamicamente
- Roteamento — sistema de navegação entre páginas de uma aplicação
- JavaScript Puro — código JavaScript sem frameworks ou bibliotecas
- Manipulação do DOM — atualização dinâmica de conteúdo
- Configuração de Servidor — Apache e Nginx para suportar SPA
❌ O problema das URLs com extensões
Quando você está aprendendo JavaScript ou começando no desenvolvimento web, é comum criar páginas com extensões como .html. O resultado são URLs como:
site.com/contato.htmlsite.com/sobre.htmlsite.com/produtos.html
Essas URLs funcionam, mas têm algumas desvantagens:
- Parecem amadoras — sites profissionais usam URLs limpas
- Dificultam o SEO — palavras-chave na URL são mais importantes que extensões
- Compartilhamento complicado — URLs longas com extensões não são atraentes
- Manutenção difícil — mudar a estrutura exige renomear arquivos
site.com/contato.htmlsite.com/sobre.htmlsite.com/produtos.html
site.com/contatosite.com/sobresite.com/produtos
🔍 O que é a History API?
A History API é uma interface nativa do navegador que permite manipular o histórico de navegação sem recarregar a página. Com ela, você pode:
- Adicionar estados ao histórico
- Alterar a URL sem recarregar a página
- Navegar entre estados com os botões voltar/avançar
- Atualizar o conteúdo da página dinamicamente
Os principais métodos da History API são:
history.pushState()— adiciona um novo estado ao históricohistory.replaceState()— substitui o estado atualhistory.popstate— evento disparado quando o usuário navega pelo histórico
// Adiciona um novo estado ao histórico
history.pushState(null, '', '/sobre');
// Escuta mudanças no histórico (botão voltar/avançar)
window.addEventListener('popstate', () => {
navegar(location.pathname);
});
🏗️ Criando uma SPA com JavaScript Puro
Estrutura do projeto
amigaveljs/
├── css/
│ └── style.css
├── js/
│ ├── app.js
│ ├── router.js
│ └── renderer.js
├── templates/
│ ├── home.html
│ ├── sobre.html
│ ├── contato.html
│ └── 404.html
└── index.html
rogerio@servidor:~$
1. HTML - index.html
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Página Inicial</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="./css/style.css">
<script type="module" src="./js/app.js"></script>
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-dark bg-dark shadow">
<div class="container">
<a class="navbar-brand" href="/">Mini Router JS</a>
<div class="navbar-nav ms-auto">
<a href="/" class="nav-link">Página Inicial</a>
<a href="/sobre" class="nav-link">Sobre</a>
<a href="/contato" class="nav-link">Contato</a>
</div>
</div>
</nav>
<main class="container">
<section id="app"> </section>
</main>
</body>
</html>
2. JavaScript - js/app.js
import { navegar } from "./router.js";
document.addEventListener("click", e => {
const LINK = e.target.closest("a");
if (!LINK) {
return;
}
const HREF = LINK.getAttribute("href");
if (!HREF.startsWith("/")) {
return;
}
e.preventDefault();
navegar(HREF);
});
window.addEventListener("popstate", () => {
navegar(location.pathname);
});
navegar(location.pathname);
3. JavaScript - js/router.js
import { renderizar } from "./renderer.js";
const ROTAS = {
"/": {
template: "/templates/home.html",
titulo: "Home"
},
"/sobre": {
template: "/templates/sobre.html",
titulo: "Sobre"
},
"/contato": {
template: "/templates/contato.html",
titulo: "Contato"
},
"/404": {
template: "/templates/404.html",
titulo: "404"
}
};
export async function navegar(url){
const ROTA = ROTAS[url];
if (!ROTA) {
navegar("/404");
return;
}
history.pushState({}, "", url);
document.title = ROTA.titulo;
await renderizar(ROTA.template);
}
4. JavaScript - js/renderer.js
export async function renderizar(caminho){
const APP = document.querySelector("#app");
const RESPOSTA = await fetch(caminho);
APP.innerHTML = await RESPOSTA.text();
}
⚙️ Configurando o servidor para URLs amigáveis
Para que as URLs amigáveis funcionem em produção, o servidor precisa redirecionar todas as requisições para o index.html. Isso permite que o JavaScript gerencie o roteamento.
Apache — .htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
Este arquivo .htaccess faz o seguinte:
- RewriteEngine On — ativa o motor de reescrita
- RewriteCond %{REQUEST_FILENAME} !-f — se não for um arquivo existente
- RewriteCond %{REQUEST_FILENAME} !-d — se não for um diretório existente
- RewriteRule . /index.html [L] — redireciona para
index.html
Nginx — configuração
server {
listen 80;
server_name localhost;
root /CAMINHO/DO/SEU/PROJETO;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
root /CAMINHO/DO/SEU/PROJETO— define o diretório raiz do projetoindex index.html— define o arquivo padrãotry_files $uri $uri/ /index.html— tenta servir o arquivo, o diretório ou redireciona paraindex.html
Testando a configuração do Nginx
rogerio@servidor:~$ sudo nginx -t
nginx: syntax is ok
nginx: test is successful
rogerio@servidor:~$ sudo systemctl restart nginx
⏱️ Capítulos do vídeo
-
00:00 — O problema das URLs com
.html - 00:05 — Introdução à History API
- 00:10 — Criando o roteador em JavaScript puro
- 00:15 — Configurando o servidor (Apache/Nginx)
- 00:22 — Testando as URLs amigáveis
- 00:28 — Conclusão e dicas finais
🎯 Conclusão
Criar URLs amigáveis com JavaScript puro é uma habilidade essencial para qualquer desenvolvedor web. Com a History API, você pode transformar seu projeto em uma SPA profissional sem depender de frameworks.
Neste artigo, você aprendeu:
- ✅ O que são URLs amigáveis e por que elas são importantes
- ✅ Como usar a History API para manipular URLs
- ✅ Como criar um roteador em JavaScript puro
- ✅ Como configurar o Apache e Nginx para suportar SPA
- ✅ Boas práticas de desenvolvimento web
💡 Lembre-se: A History API é a base de frameworks como React Router, Vue Router e Angular Router. Entender como ela funciona por baixo dos panos vai te ajudar a se tornar um programador mais completo e profissional.
🤔 O que você achou?
💬 Quer aprender JavaScript do ZERO? Comece agora a escrever seu primeiro código e seus fundamentos!
❓ FAQ: Perguntas Frequentes sobre URLs Amigáveis e History API
.html ou parâmetros desnecessários, facilitando a leitura para usuários e mecanismos de busca. # na URL. A primeira é a abordagem utilizada pela maioria das aplicações modernas. 🎬 Assista ao Vídeos completo sobre URL Amigável sem Framework e sem Backend
Muita gente acredita que criar URLs amigáveis só é possível utilizando frameworks ou algum tipo de back-end. Mas isso não é verdade. Neste vídeo você vai desvendar o segredo por trás das URLs amigáveis utilizando apenas JavaScript puro, organizando o projeto em módulos, templates HTML e arquivos separados para construir uma navegação moderna, limpa e profissional, sem depender de frameworks, bibliotecas ou back-end..
🎬 Assista ao Vídeos completo sobre URL Amigável sem Framework e sem Backend
🔗 Conecte-se Comigo
💬 Você já utilizou a History API ou ainda trabalha com páginas .html na URL? Compartilhe sua experiência nos comentários! 👇
#JavaScript #HistoryAPI #SPA #Frontend #DesenvolvimentoWeb #JavaScriptPuro #SinglePageApplication #WebDeveloper #Programacao #RogerioPontesTI