Как работают middleware в Nuxt?
MiddleNuxt.js #nuxt #middleware #routing
Вопрос
Что такое route middleware в Nuxt и какие они бывают?
Короткий ответ
Route middleware — это функции, выполняющиеся перед переходом на страницу. Используются для проверки авторизации, редиректов, загрузки обязательных данных до рендера.
Подробный ответ
Три способа объявить middleware:
- Именованный — файл в
middleware/auth.ts, подключается черезdefinePageMeta({ middleware: 'auth' }). - Глобальный — файл с суффиксом
.global.ts(middleware/analytics.global.ts), выполняется на каждой навигации автоматически. - Inline — функция прямо внутри
definePageMeta({ middleware: [...] })на конкретной странице.
Сигнатура middleware — (to, from) => { ... }. Внутри можно:
- вызвать
return navigateTo('/login')для редиректа; - вернуть
abortNavigation('Сообщение'), чтобы отменить переход; - ничего не возвращать — навигация продолжится как обычно.
Middleware выполняются до рендера страницы, в порядке: глобальные → именованные, указанные на странице.
Пример
// middleware/auth.ts
export default defineNuxtRouteMiddleware((to) => {
const isAuthenticated = useState('authenticated')
if (!isAuthenticated.value && to.path !== '/login') {
return navigateTo('/login')
}
})
<script setup>
definePageMeta({
middleware: 'auth'
})
</script>
Дополнительные вопросы
- Чем route middleware отличается от server middleware (
server/middleware/)? - Выполняется ли middleware на сервере при первой загрузке страницы?
- Как передать данные из middleware в саму страницу?