mirror of
https://github.com/nuxt/nuxt.git
synced 2024-11-11 08:33:53 +00:00
90784f79d7
* docs: implement new website theme * chore: rename dirs * chore: update build * lint fix * chore: update deps * fix: include node_modules in esbuild step * chore: update deps * Update .gitignore * chore: update theme version * up * up * fix: use svg for illustration * chore: update to 0.0.12 * chore: force parse5 resolution * stay with build * feat: always display first home section * Update yarn.lock * chore: update theme * fix lint * docs: update home title * chore: update website theme version * Update docs/content/0.index.md Co-authored-by: pooya parsa <pyapar@gmail.com> * Update docs/content/0.index.md Co-authored-by: pooya parsa <pyapar@gmail.com> * up * chore: bump theme version * up * chore: up * up up and up * chore: generate * fix: boolean value * feat: new images * update again * chore: up * ouep * chore: up Co-authored-by: Daniel Roe <daniel@roe.dev> Co-authored-by: Clément Ollivier <clement.o2p@gmail.com> Co-authored-by: pooya parsa <pyapar@gmail.com>
2.3 KiB
2.3 KiB
Plugins and Middleware
Plugins
Plugins now have a different format, and take only one argument (nuxtApp
). Read more in the docs.
::code-group
export default (ctx, inject) => {
inject('injected', () => 'my injected function')
})
export default defineNuxtPlugin(nuxtApp => {
// now available on `nuxtApp.$injected`
nuxtApp.provide('injected', () => 'my injected function')
// You can alternatively use this format, which comes with automatic type support
return {
provide: {
injected: () => 'my injected function'
}
}
})
::
::alert{icon=👉}
You can read more about the format of nuxtApp
in the docs.
::
Migration
- Migrate your plugins to use the
defineNuxtPlugin
helper function. - Remove any entries in your
nuxt.config
plugins array that are located in yourplugins/
folder. All files in this directory at the top level (and any index files in any subdirectories) will be automatically registered. Instead of settingmode
toclient
orserver
, you can indicate this in the file name. For example,~/plugins/my-plugin.client.ts
will only be loaded on client-side.
Route Middleware
Route middleware has a different format.
::code-group
export default function ({ store, redirect }) {
// If the user is not authenticated
if (!store.state.authenticated) {
return redirect('/login')
}
}
export default defineNuxtRouteMiddleware((to, from) => {
const auth = useState('auth')
if (!auth.value.authenticated) {
return navigateTo('/login')
}
})
::
Much like Nuxt 2, route middleware placed in your ~/middleware
folder is automatically registered. You can then specify it by name in a component. However, this is done with definePageMeta
rather than as a component option.
navigateTo
is one of a number of route helper functions, which you can read more about in the documentation about route middleware.
Migration
- Migrate your route middleware to use the
defineNuxtRouteMiddleware
helper function. - Any global middleware (such as in your
nuxt.config
) can be placed in your~/middleware
folder with a.global
extension, for example~/middleware/auth.global.ts
.