Плагины и middleware
Переход на формат плагинов и route middleware из Nuxt 3 в проекте с Nuxt Bridge.
Новый формат плагинов
Вы можете перейти на API плагинов Nuxt 3 — он слегка отличается от формата Nuxt 2.
Плагины теперь принимают только один аргумент (nuxtApp). Подробнее — в документации.
plugins/hello.ts
export default defineNuxtPlugin((nuxtApp) => {
nuxtApp.provide('injected', () => 'моя внедряемая функция')
// теперь доступен в `nuxtApp.$injected`
})
Если вы хотите использовать новые композаблы Nuxt (такие как
useNuxtApp или useRuntimeConfig) в своих плагинах, для таких плагинов нужно использовать вспомогательную функцию defineNuxtPlugin.Через
nuxtApp.vueApp доступен интерфейс совместимости, но без своей логики однократной регистрации не стоит так подключать плагины, директивы, миксины и компоненты — иначе возможны повторные регистрации и утечки памяти.Новый формат route middleware
Аналогично можно перейти на API route middleware Nuxt 3 — он слегка отличается от формата Nuxt 2.
Middleware теперь принимает только два аргумента (to, from). Подробнее — в документации.
export default defineNuxtRouteMiddleware((to) => {
if (to.path !== '/') {
return navigateTo('/')
}
})
Использование
defineNuxtRouteMiddleware вне директории middleware не поддерживается.definePageMeta
Вы также можете использовать definePageMeta в Nuxt Bridge.
Это можно включить с помощью опции macros.pageMeta в вашем файле конфигурации.
nuxt.config.ts
import { defineNuxtConfig } from '@nuxt/bridge'
export default defineNuxtConfig({
bridge: {
macros: {
pageMeta: true,
},
},
})
В Bridge через
definePageMeta доступны в основном поля middleware и layout.