Страницы
extendPages
Маршруты в Nuxt генерируются по структуре файлов в app/pages. Чтобы изменить маршруты (добавить страницу не из файлов, удалить или изменить маршрут), используется extendPages — расширение и изменение конфигурации страниц.
Использование
import { createResolver, defineNuxtModule, extendPages } from '@nuxt/kit'
export default defineNuxtModule({
setup (options) {
const { resolve } = createResolver(import.meta.url)
extendPages((pages) => {
pages.unshift({
name: 'prismic-preview',
path: '/preview',
file: resolve('runtime/preview.vue'),
})
})
},
})
Тип
function extendPages (callback: (pages: NuxtPage[]) => void): void
Параметры
callback: функция, вызываемая с массивом страниц. Можно изменять массив (добавлять, удалять, менять элементы). Изменения нужно вносить в переданный массив — копия не повлияет на конфигурацию.
| Свойство | Тип | Обязательный | Описание |
|---|---|---|---|
name | string | нет | Имя маршрута (программная навигация, идентификация). |
path | string | нет | URL маршрута. Если не задан — выводится из расположения файла. |
file | string | нет | Путь к Vue-файлу компонента маршрута. |
meta | Record<string, any> | нет | Метаданные маршрута (макеты, middleware, навигационные гарды). |
alias | string[] | string | нет | Один или несколько алиасов маршрута. |
redirect | RouteLocationRaw | нет | Правило редиректа (именованный маршрут, объект или путь). |
children | NuxtPage[] | нет | Вложенные дочерние маршруты. |
extendRouteRules
Nuxt использует серверный движок Nitro. В конфигурации можно задавать правила для маршрутов: редиректы, прокси, кэш, заголовки. Правила привязываются к паттернам маршрутов.
Использование
import { createResolver, defineNuxtModule, extendPages, extendRouteRules } from '@nuxt/kit'
export default defineNuxtModule({
setup (options) {
const { resolve } = createResolver(import.meta.url)
extendPages((pages) => {
pages.unshift({
name: 'preview-new',
path: '/preview-new',
file: resolve('runtime/preview.vue'),
})
})
extendRouteRules('/preview', {
redirect: {
to: '/preview-new',
statusCode: 302,
},
})
extendRouteRules('/preview-new', {
cache: {
maxAge: 60 * 60 * 24 * 7,
},
})
},
})
Тип
function extendRouteRules (route: string, rule: NitroRouteConfig, options?: ExtendRouteRulesOptions): void
Параметры
route: паттерн маршрута для сопоставления.
rule: конфигурация правила для совпадающих маршрутов.
options: при override: true перезаписывает существующую конфигурацию маршрута.
| Свойство | Тип | По умолчанию | Описание |
|---|---|---|---|
override | boolean | false | Перезаписать правило маршрута. |
addRouteMiddleware
Регистрирует route middleware для всех маршрутов или для выбранных.
Middleware можно также задавать в плагинах через композабл addRouteMiddleware.
Использование
import { addRouteMiddleware, createResolver, defineNuxtModule } from '@nuxt/kit'
export default defineNuxtModule({
setup () {
const { resolve } = createResolver(import.meta.url)
addRouteMiddleware({
name: 'auth',
path: resolve('runtime/auth'),
global: true,
}, { prepend: true })
},
})
function isAuthenticated (): boolean { return false }
// ---cut---
export default defineNuxtRouteMiddleware((to, from) => {
// isAuthenticated() — пример проверки аутентификации
if (to.path !== '/login' && isAuthenticated() === false) {
return navigateTo('/login')
}
})
Тип
function addRouteMiddleware (input: NuxtMiddleware | NuxtMiddleware[], options?: AddRouteMiddlewareOptions): void
Параметры
input: объект middleware или массив таких объектов:
| Свойство | Тип | Обязательный | Описание |
|---|---|---|---|
name | string | да | Имя middleware. |
path | string | да | Путь к файлу middleware. |
global | boolean | нет | true — применять ко всем маршрутам. |
options:
| Свойство | Тип | По умолчанию | Описание |
|---|---|---|---|
override | boolean | false | true — заменить middleware с тем же именем. |
prepend | boolean | false | true — добавить перед существующими middleware. |