Плагины и Middleware
Узнайте, как мигрировать плагины и middleware с Nuxt 2 на Nuxt 3.
Плагины
Плагины теперь имеют другой формат и принимают только один аргумент (nuxtApp).
export default (ctx, inject) => {
inject('injected', () => 'моя внедряемая функция')
})
export default defineNuxtPlugin(nuxtApp => {
// теперь доступно в `nuxtApp.$injected`.
nuxtApp.provide('injected', () => 'моя внедряемая функция')
// В качестве альтернативы можно использовать этот формат, который поставляется с автоматической поддержкой типов
return {
provide: {
injected: () => 'my injected function'
}
}
})
Миграция
- Мигрируйте свои плагины, используя вспомогательную функцию
defineNuxtPlugin. - Удалите любые записи в массиве
pluginsвашегоnuxt.config, которые расположены в директорииplugins/. Все файлы в этой директории на верхнем уровне (и любые индексные файлы в любых поддиректориях) будут автоматически зарегистрированы. Вместо установкиmodeвclientилиserver, вы можете указать это в имени файла. Например,~/plugins/my-plugin.client.tsбудет загружен только на клиенте.
Route Middleware
Middleware для маршрутов имеет другой формат.
export default function ({ store, redirect }) {
// Если пользователь не авторизован
if (!store.state.authenticated) {
return redirect('/login')
}
}
export default defineNuxtRouteMiddleware((to, from) => {
const auth = useState('auth')
if (!auth.value.authenticated) {
return navigateTo('/login')
}
})
Подобно Nuxt 2, middleware для маршрутов, размещенное в вашей папке ~/middleware, регистрируется автоматически. Затем вы можете указать его по имени в компоненте. Однако, это делается с помощью definePageMeta, а не как опция компонента.
navigateTo - это одна из нескольких вспомогательных функций для маршрутов.
Миграция
- Перенесите свою middleware для маршрутов, используя вспомогательную функцию
defineNuxtRouteMiddleware. - Любая глобальная middleware (например, в вашем
nuxt.config) можно разместить в вашей папке~/middlewareс расширением.global, например~/middleware/auth.global.ts.