Diretório Intermediário
O diretório middleware contém o intermediário da nossa aplicação. O intermediário permite-nos definir funções personalizadas que podem ser executadas antes de desenhar uma página ou grupo de páginas (disposição).
O intermediário partilhado deve ser colocado no diretório middleware/. O nome do ficheiro será o nome do intermediário (middleware/auth.js será o intermediário auth). Também podemos definir o intermediário específico da página ao utilizar diretamente uma função, consultar intermediário anónimo .
Um intermediário recebe o contexto como primeiro argumento.
export default function (context) {
// Adicionar a propriedade `userAgent` ao contexto.
context.userAgent = process.server
? context.req.headers['user-agent']
: navigator.userAgent
}
No modo universal, os intermediários serão chamados uma vez no lado do servidor (no primeiro pedido à aplicação de Nuxt, por exemplo, ao acessar diretamente à aplicação ou ao atualizar a página) e no lado do cliente ao navegar para outras rotas. Com ssr: false, os intermediários serão chamados no lado do cliente em ambas as situações.
O intermédio será executado em série, por esta ordem:
-
nuxt.config.js(pela ordem no ficheiro). - Disposições correspondentes.
- Páginas correspondentes.
Intermediário da Rota
Um intermediário pode ser assíncrono. Para isto, retornamos uma Promise ou utilizar async e await:
import http from 'http'
export default function ({ route }) {
return http.post('http://my-stats-api.com', {
url: route.fullPath
})
}
Depois, no nosso nuxt.config.js, usamos a chave router.middleware:
export default {
router: {
middleware: 'stats'
}
}
Agora, o intermediário stats será chamado para cada mudança da rota.
Também podemos adicionar o nosso intermediário (mesmo múltiplo) a uma disposição ou página específica.
export default {
middleware: ['auth', 'stats']
}
Intermediário Nomeado
Podemos criar um intermediário nomeado ao criar um ficheiro no diretório middleware/, o nome do ficheiro será o nome do intermediário:
export default function ({ store, redirect }) {
// Se o utilizador não estiver autenticado.
if (!store.state.authenticated) {
return redirect('/login')
}
}
<template>
<h1>Secret page</h1>
</template>
<script>
export default {
middleware: 'authenticated'
}
</script>
Intermediário Anónimo
Se precisarmos de utilizar um intermediário exclusivo para uma página específica, podemos utilizar diretamente uma função para a mesma (ou um vetor de funções):
<template>
<h1>Secret page</h1>
</template>
<script>
export default {
middleware({ store, redirect }) {
// Se o utilizador não estiver autenticado.
if (!store.state.authenticated) {
return redirect('/login')
}
}
}
</script>
Sébastien Chopin
Nazaré da Piedade
Nobu
川音리오
Maciek Palmowski
Nestor Vera
Daniel Roe
Yue Yang
Jeronimas
Clément Ollivier
Alexander Lichter
N3-rd
Adrien Zaganelli
Mag
Stefan Huber
Olga Bulat
Paiva
Florian Reuschel
Savas Vedova
HIJACK
Vinícius Alves
Kareem Dabbeet
Valentín Costa
Ryan Skinner
Alex Hirzel
Ajeet Chaulagain
René Eschke
Nico Devs
Muhammad
Naoki Hamada
Tom
Yann Aufray
Anthony Chu
Nuzhat Minhaz
Lucas Portet
Richard Schloss
Bobby
bpy
Antony Konstantinidis
Hibariya
Jose Seabra
Eze
Florian Lefebvre
Lucas Recoaro
Julien SEIXAS