Escrito por: Thiago Nunes Batista
Publicado em: 14/01/2025
Última atualização: 14/01/2025
No Front-end, os Middlewares são blocos de códigos que são executados antes que a navegação para uma nova página aconteça, permitindo realizar diversos controles na nossa aplicação, como:
Os Middlewares funcionam como uma camada intermediária, atuando desde o início do carregamento da página até a sua renderização completa.
Essa funcionalidade de middlewares está presente em frameworks modernos do Front-end como Next.js e Nuxt.JS.
Neste artigo, vou te ensinar como implementar os Middlewares de rota no Nuxt.JS.
"Pessoas em uma festa" por Cottonbro Studio , licenciado sob Pexels
Para explicar de forma mais simples, vou utilizar uma analogia:
Imagine que você quer entrar em uma festa, e nesse processo você vai passar por três funcionários da segurança da festa, que são os "middlewares", e cada um vai ser responsável por fazer uma ação específica.
Por fim, após passar por todas as etapas anteriores, você estará livre para acessar o salão da festa.
No Nuxt.js temos os seguintes tipos de Middlewares:
globais
são criados dentro da pasta /middleware
e são executados em todas as páginas. É necessário adicionar o sufixo global
./*
Exemplo de middleware Global:
Esse middleware verifica se a URL/rota buscada existe.
Caso não exista o usuário é redirecionado para página de links.
Nome e Diretório do arquivo:
/middleware/notFound.global.js
*/
export default defineNuxtRouteMiddleware((to) => {
const hasFoundRoute = to.matched.length > 0;
if (!hasFoundRoute) {
return navigateTo({
path: "/links"
});
}
});
inline
ou anônimos
são middlewares específicos para uma página, definidos diretamente dentro do arquivo da página no Nuxt; Isso limita a reutilização do código, visto que ele não pode ser facilmente compartilhado com outras páginas./*
Exemplo de middleware inline:
Esse middleware verifica se os dados estão presentes na store.
Caso não esteja, os dados serão requisitados.
*/
<script setup lang="ts">
import { useStore } from 'vuex';
definePageMeta({
middleware: [
async function (to, from) {
const store = useStore();
if (!store.state.user) {
await store.dispatch("fetchUser");
}
},
],
});
</script>
nomeados
são criados dentro da pasta /middleware
./*
Exemplo de middleware Nomeado:
Esse middleware verifica o usuário está logado.
Caso não esteja logado, ele é redirecionado para página de login.
Nome e Diretório do arquivo:
/middleware/auth.js
*/
export default defineNuxtRouteMiddleware((to, from) => {
const { $store } = useNuxtApp();
if (!$store.auth?.loggedIn) {
return navigateTo("/login");
}
});
Nos Middlewares nomeados, é necessário definir quais páginas utilizam determinado middleware, uma das formas de se fazer isso é alterando os arquivos das páginas que vão utilizar aquele middleware:
<script setup>
definePageMeta({
middleware: "auth-admin"
});
</script>
Também importante dizer que mesmo que você nomeie os arquivos de middleware em padrões como PascalCase
ou camelCase
, os nomes dos arquivos são normalizados para o padrão kebab-case
.
Espero que com esse artigo eu tenha conseguido te explicar de forma simples e rápida os principais pontos de criação e utilização de Middlewares no Nuxt.JS 🙋🏻♂️.
Se você precisar de mais informações sobre Middlewares no Nuxt.JS, você pode buscar na documentação oficial.