Страницы
extendPages
В Nuxt 3 маршруты автоматически генерируются на основе структуры файлов в директории pages
. Однако могут возникнуть ситуации, когда вы захотите настроить эти маршруты. Например, вам может потребоваться добавить маршрут для динамической страницы, не созданной Nuxt, удалить существующий маршрут или изменить конфигурацию маршрута. Для таких настроек Nuxt предоставляет функцию extendPages
, которая позволяет расширять и изменять конфигурацию страниц.
Тип
function extendPages (callback: (pages: NuxtPage[]) => void): void
type NuxtPage = {
name?: string
path: string
file?: string
meta?: Record<string, any>
alias?: string[] | string
redirect?: RouteLocationRaw
children?: NuxtPage[]
}
Параметры
callback
Тип: (pages: NuxtPage[]) => void
Обязательный: true
Эта функция будет вызываться с конфигурацией страниц. Вы можете модифицировать этот массив, добавляя, удаляя или изменяя его элементы. Важно: вносите изменения непосредственно в предоставленный массив страниц, поскольку изменения, внесенные в копию массива, не будут учитываться в конфигурации.
Примеры
// https://github.com/nuxt-modules/prismic/blob/master/src/module.ts
import { createResolver, defineNuxtModule, extendPages } from '@nuxt/kit'
export default defineNuxtModule({
setup(options) {
const resolver = createResolver(import.meta.url)
extendPages((pages) => {
pages.unshift({
name: 'prismic-preview',
path: '/preview',
file: resolver.resolve('runtime/preview.vue')
})
})
}
})
extendRouteRules
Nuxt работает на основе серверного движка Nitro. С помощью Nitro вы можете непосредственно встроить высокоуровневую логику в вашу конфигурацию, что полезно для таких действий, как: перенаправления, проксирование, кэширование и добавление заголовков к маршрутам. Эта конфигурация работает путем сопоставления шаблонов маршрутов с конкретными настройками маршрутов.
Тип
function extendRouteRules (route: string, rule: NitroRouteConfig, options: ExtendRouteRulesOptions): void
interface NitroRouteConfig {
cache?: CacheOptions | false;
headers?: Record<string, string>;
redirect?: string | { to: string; statusCode?: HTTPStatusCode };
prerender?: boolean;
proxy?: string | ({ to: string } & ProxyOptions);
isr?: number | boolean;
cors?: boolean;
swr?: boolean | number;
static?: boolean | number;
}
interface ExtendRouteRulesOptions {
override?: boolean
}
interface CacheOptions {
swr?: boolean
name?: string
group?: string
integrity?: any
maxAge?: number
staleMaxAge?: number
base?: string
headersOnly?: boolean
}
// See https://www.jsdocs.io/package/h3#ProxyOptions
interface ProxyOptions {
headers?: RequestHeaders | HeadersInit;
fetchOptions?: RequestInit & { duplex?: Duplex } & {
ignoreResponseError?: boolean;
};
fetch?: typeof fetch;
sendStream?: boolean;
streamRequest?: boolean;
cookieDomainRewrite?: string | Record<string, string>;
cookiePathRewrite?: string | Record<string, string>;
onResponse?: (event: H3Event, response: Response) => void;
}
Параметры
route
Тип: string
Обязательный: true
Шаблон маршрута для сопоставления.
rule
Тип: NitroRouteConfig
Обязательный: true
Конфигурация маршрута для применения к соответствующему маршруту.
options
Тип: ExtendRouteRulesOptions
По умолчанию: {}
Параметры для передачи в конфигурацию маршрута. Если override
установлен в true
, то он перезапишет существующую конфигурацию маршрута.
Примеры
// https://github.com/directus/website/blob/main/modules/redirects.ts
import { createResolver, defineNuxtModule, extendRouteRules, extendPages } from '@nuxt/kit'
export default defineNuxtModule({
setup(options) {
const resolver = createResolver(import.meta.url)
extendPages((pages) => {
pages.unshift({
name: 'preview-new',
path: '/preview-new',
file: resolver.resolve('runtime/preview.vue')
})
})
extendRouteRules('/preview', {
redirect: {
to: '/preview-new',
statusCode: 302
}
})
extendRouteRules('/preview-new', {
cache: {
maxAge: 60 * 60 * 24 * 7
}
})
}
})
addRouteMiddleware
Регистрирует middleware маршрутов для использования во всех маршрутах или в конкретных маршрутах.
Middleware маршрутов также могут быть определены в плагинах с помощью композабла addRouteMiddleware
.
Тип
function addRouteMiddleware (input: NuxtMiddleware | NuxtMiddleware[], options: AddRouteMiddlewareOptions): void
type NuxtMiddleware = {
name: string
path: string
global?: boolean
}
interface AddRouteMiddlewareOptions {
override?: boolean
prepend?: boolean
}
Параметры
input
Тип: NuxtMiddleware | NuxtMiddleware[]
Обязательный: true
Middleware-объект или массив middleware-объектов со следующими свойствами:
name
(обязательный)
Тип:string
Имя middleware.path
(обязательный)
Тип:string
Путь к middleware.global
(опциональный)
Тип:boolean
Если включено, регистрирует middleware для использования во всех маршрутах.
options
Тип: AddRouteMiddlewareOptions
По умолчанию: {}
override
(опциональный)
Тип:boolean
По умолчанию:false
Если включено, переопределяет существующую middleware с тем же именем.prepend
(опциональный)
Тип:boolean
По умолчанию:false
Если включено, добавляет middleware в начало списка существующих middleware.
Примеры
export default defineNuxtRouteMiddleware((to, from) => {
// isAuthenticated() - это пример метода, проверяющего, авторизован ли пользователь.
if (to.path !== '/login' && isAuthenticated() === false) {
return navigateTo('/login')
}
})