Страницы

Исходный код
Nuxt Kit предоставляет утилиты для настройки страниц и маршрутизации — расширения дерева страниц, правил маршрутов и прослоек.

extendPages

В Nuxt маршруты строятся по файлам в каталоге pages. Чтобы добавить страницу вне этой схемы, убрать маршрут или изменить его параметры, используйте extendPages — колбэк получает массив страниц, который можно менять на месте.

Смотрите видео от Vue School о 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: получает массив страниц NuxtPage[]. Меняйте его на месте — добавляйте, удаляйте и правьте элементы. Отдельно созданный внутри колбэка массив в итоговую конфигурацию не подставляется.

СвойствоТипОбязательноОписание
namestringfalseИмя маршрута: навигация и идентификация.
pathstringfalseURL-путь. Если не задан, Nuxt выведёт его из расположения файла.
filestringfalseПуть к Vue-файлу компонента маршрута.
metaRecord<string, any>falseПроизвольные метаданные маршрута (лейаут, прослойки, ограничения навигации).
aliasstring[] | stringfalseОдин или несколько алиасов URL для маршрута.
redirectRouteLocationRawfalseПравило редиректа: именованные маршруты, объекты или строки путей.
childrenNuxtPage[]falseДочерние маршруты (вложенные лейауты и представления).

extendRouteRules

Серверная часть строится на Nitro. В конфигурации задаются редиректы, прокси, кэш и заголовки для шаблонов путей: паттерн маршрута сопоставляется с набором правил.

Подробнее о правилах маршрутов Nitro — в документации Nitro.
Видео Vue School о правилах маршрутов и прослойках маршрутов.

Использование

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: настройки Nitro для подошедших запросов.

Подробнее о правилах маршрутов — в разделе Гибридный рендеринг → правила маршрутов.

options: дополнительные параметры. При override: true существующее правило для этого шаблона заменяется целиком.

ИмяТипПо умолчаниюОписание
overridebooleanfalseПолностью заменить ранее заданное правило для шаблона

addRouteMiddleware

Регистрирует прослойки маршрутов (route middleware) глобально или для выбранных маршрутов.

Ту же регистрацию из кода приложения можно выполнить утилитой addRouteMiddleware (например, в плагине).

Подробнее о прослойках маршрутов — в документации.
Смотрите видео от Vue School о добавлении правил маршрутов и прослоек маршрутов.

Использование

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 addRouteMiddleware (input: NuxtMiddleware | NuxtMiddleware[], options?: AddRouteMiddlewareOptions): void

Параметры

input: объект прослойки маршрута (middleware) или массив объектов со свойствами:

СвойствоТипОбязательноОписание
namestringtrueИмя прослойки.
pathstringtrueПуть к файлу прослойки.
globalbooleanfalseПри true прослойка выполняется для всех маршрутов.

options: дополнительные опции:

СвойствоТипПо умолчаниюОписание
overridebooleanfalseПри true заменяет уже зарегистрированную прослойку с тем же name.
prependbooleanfalseПри true вставляет прослойку перед ранее зарегистрированными.