@nuxt/docs 4.1.2 → 4.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/1.getting-started/01.introduction.md +6 -6
- package/1.getting-started/02.installation.md +3 -2
- package/1.getting-started/03.configuration.md +36 -36
- package/1.getting-started/04.views.md +9 -9
- package/1.getting-started/05.assets.md +15 -9
- package/1.getting-started/06.styling.md +58 -48
- package/1.getting-started/07.routing.md +17 -17
- package/1.getting-started/08.seo-meta.md +59 -46
- package/1.getting-started/09.transitions.md +49 -44
- package/1.getting-started/10.data-fetching.md +104 -81
- package/1.getting-started/11.state-management.md +26 -19
- package/1.getting-started/12.error-handling.md +22 -20
- package/1.getting-started/13.server.md +8 -8
- package/1.getting-started/14.layers.md +22 -16
- package/1.getting-started/15.prerendering.md +32 -32
- package/1.getting-started/16.deployment.md +10 -10
- package/1.getting-started/17.testing.md +44 -44
- package/1.getting-started/18.upgrade.md +241 -110
- package/2.guide/0.index.md +7 -7
- package/2.guide/{2.directory-structure → 1.directory-structure}/.navigation.yml +1 -1
- package/2.guide/{2.directory-structure → 1.directory-structure}/0.nuxt.md +3 -3
- package/2.guide/1.directory-structure/0.output.md +18 -0
- package/2.guide/{2.directory-structure → 1.directory-structure}/1.app/.navigation.yml +1 -1
- package/2.guide/{2.directory-structure → 1.directory-structure}/1.app/1.assets.md +4 -4
- package/2.guide/{2.directory-structure → 1.directory-structure}/1.app/1.components.md +45 -28
- package/2.guide/{2.directory-structure → 1.directory-structure}/1.app/1.composables.md +13 -13
- package/2.guide/{2.directory-structure → 1.directory-structure}/1.app/1.layouts.md +19 -15
- package/2.guide/{2.directory-structure → 1.directory-structure}/1.app/1.middleware.md +31 -25
- package/2.guide/{2.directory-structure → 1.directory-structure}/1.app/1.pages.md +39 -37
- package/2.guide/{2.directory-structure → 1.directory-structure}/1.app/1.plugins.md +25 -25
- package/2.guide/{2.directory-structure → 1.directory-structure}/1.app/1.utils.md +7 -7
- package/2.guide/{2.directory-structure → 1.directory-structure}/1.app/3.app-config.md +18 -18
- package/2.guide/{2.directory-structure → 1.directory-structure}/1.app/3.app.md +7 -7
- package/2.guide/{2.directory-structure → 1.directory-structure}/1.app/3.error.md +6 -6
- package/2.guide/{2.directory-structure → 1.directory-structure}/1.content.md +7 -4
- package/2.guide/{2.directory-structure → 1.directory-structure}/1.modules.md +8 -8
- package/2.guide/{2.directory-structure → 1.directory-structure}/1.node_modules.md +2 -2
- package/2.guide/{2.directory-structure → 1.directory-structure}/1.public.md +2 -2
- package/2.guide/{2.directory-structure → 1.directory-structure}/1.server.md +35 -35
- package/2.guide/{2.directory-structure → 1.directory-structure}/1.shared.md +7 -7
- package/2.guide/{2.directory-structure → 1.directory-structure}/2.env.md +8 -8
- package/2.guide/{2.directory-structure → 1.directory-structure}/2.gitignore.md +1 -1
- package/2.guide/{2.directory-structure → 1.directory-structure}/2.nuxtignore.md +5 -4
- package/2.guide/{2.directory-structure → 1.directory-structure}/2.nuxtrc.md +4 -4
- package/2.guide/{2.directory-structure → 1.directory-structure}/3.nuxt-config.md +3 -3
- package/2.guide/{2.directory-structure → 1.directory-structure}/3.package.md +1 -1
- package/2.guide/{2.directory-structure → 1.directory-structure}/3.tsconfig.md +3 -3
- package/2.guide/{1.concepts → 2.concepts}/1.auto-imports.md +22 -22
- package/2.guide/{1.concepts → 2.concepts}/10.nuxt-lifecycle.md +17 -17
- package/2.guide/{1.concepts → 2.concepts}/2.vuejs-development.md +13 -13
- package/2.guide/{1.concepts → 2.concepts}/3.rendering.md +24 -22
- package/2.guide/{1.concepts → 2.concepts}/4.server-engine.md +6 -6
- package/2.guide/{1.concepts → 2.concepts}/5.modules.md +5 -5
- package/2.guide/{1.concepts → 2.concepts}/7.esm.md +22 -16
- package/2.guide/{1.concepts → 2.concepts}/8.typescript.md +12 -12
- package/2.guide/3.going-further/1.events.md +3 -3
- package/2.guide/3.going-further/1.experimental-features.md +334 -85
- package/2.guide/3.going-further/1.features.md +58 -11
- package/2.guide/3.going-further/1.internals.md +25 -25
- package/2.guide/3.going-further/10.runtime-config.md +12 -12
- package/2.guide/3.going-further/11.nightly-release-channel.md +1 -1
- package/2.guide/3.going-further/2.hooks.md +14 -14
- package/2.guide/3.going-further/3.modules.md +126 -108
- package/2.guide/3.going-further/4.kit.md +7 -7
- package/2.guide/3.going-further/6.nuxt-app.md +8 -8
- package/2.guide/3.going-further/7.layers.md +76 -59
- package/2.guide/3.going-further/9.debugging.md +2 -2
- package/2.guide/4.recipes/1.custom-routing.md +30 -30
- package/2.guide/4.recipes/2.vite-plugin.md +45 -4
- package/2.guide/4.recipes/3.custom-usefetch.md +13 -13
- package/2.guide/4.recipes/4.sessions-and-authentication.md +35 -21
- package/2.guide/5.best-practices/hydration.md +4 -4
- package/2.guide/5.best-practices/performance.md +17 -17
- package/3.api/1.components/1.client-only.md +6 -3
- package/3.api/1.components/1.nuxt-client-fallback.md +10 -7
- package/3.api/1.components/10.nuxt-picture.md +1 -1
- package/3.api/1.components/11.teleports.md +5 -2
- package/3.api/1.components/12.nuxt-route-announcer.md +9 -9
- package/3.api/1.components/13.nuxt-time.md +49 -18
- package/3.api/1.components/2.nuxt-page.md +6 -6
- package/3.api/1.components/3.nuxt-layout.md +15 -10
- package/3.api/1.components/4.nuxt-link.md +42 -22
- package/3.api/1.components/5.nuxt-loading-indicator.md +3 -3
- package/3.api/1.components/6.nuxt-error-boundary.md +12 -10
- package/3.api/2.composables/on-prehydrate.md +2 -2
- package/3.api/2.composables/use-app-config.md +1 -1
- package/3.api/2.composables/use-async-data.md +26 -22
- package/3.api/2.composables/use-cookie.md +29 -21
- package/3.api/2.composables/use-error.md +2 -2
- package/3.api/2.composables/use-fetch.md +62 -32
- package/3.api/2.composables/use-head-safe.md +7 -7
- package/3.api/2.composables/use-head.md +5 -5
- package/3.api/2.composables/use-hydration.md +6 -6
- package/3.api/2.composables/use-lazy-async-data.md +4 -4
- package/3.api/2.composables/use-lazy-fetch.md +4 -4
- package/3.api/2.composables/use-loading-indicator.md +12 -12
- package/3.api/2.composables/use-nuxt-app.md +22 -22
- package/3.api/2.composables/use-nuxt-data.md +8 -8
- package/3.api/2.composables/use-preview-mode.md +15 -18
- package/3.api/2.composables/use-request-event.md +1 -1
- package/3.api/2.composables/use-request-fetch.md +3 -3
- package/3.api/2.composables/use-request-header.md +1 -1
- package/3.api/2.composables/use-request-headers.md +4 -4
- package/3.api/2.composables/use-request-url.md +1 -1
- package/3.api/2.composables/use-response-header.md +9 -10
- package/3.api/2.composables/use-route-announcer.md +4 -4
- package/3.api/2.composables/use-route.md +1 -1
- package/3.api/2.composables/use-router.md +10 -8
- package/3.api/2.composables/use-runtime-config.md +11 -11
- package/3.api/2.composables/use-runtime-hook.md +2 -2
- package/3.api/2.composables/use-seo-meta.md +4 -4
- package/3.api/2.composables/use-server-seo-meta.md +6 -6
- package/3.api/2.composables/use-state.md +5 -5
- package/3.api/3.utils/$fetch.md +10 -8
- package/3.api/3.utils/abort-navigation.md +3 -3
- package/3.api/3.utils/add-route-middleware.md +5 -5
- package/3.api/3.utils/call-once.md +6 -6
- package/3.api/3.utils/clear-error.md +3 -3
- package/3.api/3.utils/clear-nuxt-data.md +3 -3
- package/3.api/3.utils/clear-nuxt-state.md +3 -3
- package/3.api/3.utils/create-error.md +2 -2
- package/3.api/3.utils/define-lazy-hydration-component.md +13 -13
- package/3.api/3.utils/define-nuxt-component.md +5 -5
- package/3.api/3.utils/define-nuxt-plugin.md +13 -13
- package/3.api/3.utils/define-nuxt-route-middleware.md +5 -5
- package/3.api/3.utils/define-page-meta.md +23 -23
- package/3.api/3.utils/define-route-rules.md +7 -7
- package/3.api/3.utils/navigate-to.md +11 -11
- package/3.api/3.utils/prefetch-components.md +1 -1
- package/3.api/3.utils/preload-components.md +1 -1
- package/3.api/3.utils/preload-route-components.md +2 -2
- package/3.api/3.utils/prerender-routes.md +3 -3
- package/3.api/3.utils/refresh-cookie.md +4 -4
- package/3.api/3.utils/refresh-nuxt-data.md +12 -7
- package/3.api/3.utils/reload-nuxt-app.md +3 -3
- package/3.api/3.utils/set-page-layout.md +1 -1
- package/3.api/3.utils/set-response-status.md +3 -3
- package/3.api/3.utils/show-error.md +5 -5
- package/3.api/3.utils/update-app-config.md +4 -3
- package/3.api/4.commands/add.md +1 -1
- package/3.api/4.commands/analyze.md +2 -1
- package/3.api/4.commands/build.md +2 -1
- package/3.api/4.commands/dev.md +5 -4
- package/3.api/4.commands/generate.md +3 -2
- package/3.api/4.commands/init.md +3 -2
- package/3.api/4.commands/module.md +4 -4
- package/3.api/4.commands/prepare.md +7 -2
- package/3.api/4.commands/preview.md +5 -4
- package/3.api/4.commands/test.md +40 -0
- package/3.api/4.commands/typecheck.md +5 -3
- package/3.api/4.commands/upgrade.md +3 -3
- package/3.api/5.kit/1.modules.md +123 -37
- package/3.api/5.kit/10.runtime-config.md +1 -1
- package/3.api/5.kit/10.templates.md +8 -6
- package/3.api/5.kit/11.nitro.md +66 -62
- package/3.api/5.kit/12.resolving.md +2 -2
- package/3.api/5.kit/14.builder.md +61 -4
- package/3.api/5.kit/15.examples.md +5 -7
- package/3.api/5.kit/16.layers.md +26 -26
- package/3.api/5.kit/3.compatibility.md +14 -14
- package/3.api/5.kit/4.autoimports.md +13 -13
- package/3.api/5.kit/5.components.md +8 -7
- package/3.api/5.kit/6.context.md +3 -3
- package/3.api/5.kit/7.pages.md +7 -7
- package/3.api/5.kit/8.layout.md +2 -2
- package/3.api/5.kit/9.head.md +132 -0
- package/3.api/5.kit/9.plugins.md +5 -4
- package/3.api/6.advanced/1.hooks.md +5 -5
- package/3.api/6.advanced/2.import-meta.md +3 -3
- package/3.api/6.nuxt-config.md +365 -859
- package/3.api/index.md +7 -7
- package/5.community/2.getting-help.md +1 -1
- package/5.community/3.reporting-bugs.md +3 -3
- package/5.community/4.contribution.md +11 -11
- package/5.community/5.framework-contribution.md +4 -4
- package/5.community/6.roadmap.md +2 -2
- package/6.bridge/1.overview.md +13 -13
- package/6.bridge/10.configuration.md +2 -1
- package/6.bridge/2.typescript.md +3 -3
- package/6.bridge/3.bridge-composition-api.md +8 -8
- package/6.bridge/4.plugins-and-middleware.md +9 -9
- package/6.bridge/5.nuxt3-compatible-api.md +20 -17
- package/6.bridge/6.meta.md +20 -19
- package/6.bridge/7.runtime-config.md +1 -1
- package/6.bridge/8.nitro.md +3 -3
- package/6.bridge/9.vite.md +4 -4
- package/7.migration/1.overview.md +2 -2
- package/7.migration/10.bundling.md +1 -1
- package/7.migration/11.server.md +3 -3
- package/7.migration/2.configuration.md +23 -21
- package/7.migration/20.module-authors.md +7 -7
- package/7.migration/3.auto-imports.md +3 -3
- package/7.migration/4.meta.md +21 -18
- package/7.migration/5.plugins-and-middleware.md +8 -8
- package/7.migration/6.pages-and-layouts.md +28 -24
- package/7.migration/7.component-options.md +18 -18
- package/7.migration/8.runtime-config.md +7 -7
- package/package.json +1 -1
- package/2.guide/2.directory-structure/0.output.md +0 -18
- /package/2.guide/{1.concepts → 2.concepts}/.navigation.yml +0 -0
- /package/2.guide/{1.concepts → 2.concepts}/9.code-style.md +0 -0
|
@@ -14,10 +14,10 @@ This method is useful if you want to invalidate the data fetching for another pa
|
|
|
14
14
|
|
|
15
15
|
## Type
|
|
16
16
|
|
|
17
|
-
```ts
|
|
18
|
-
clearNuxtData (keys?: string | string[] | ((key: string) => boolean)): void
|
|
17
|
+
```ts [Signature]
|
|
18
|
+
export function clearNuxtData (keys?: string | string[] | ((key: string) => boolean)): void
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
## Parameters
|
|
22
22
|
|
|
23
|
-
* `keys`: One or an array of keys that are used in [`useAsyncData`](/docs/api/composables/use-async-data) to delete their cached data. If no keys are provided, **all data** will be invalidated.
|
|
23
|
+
* `keys`: One or an array of keys that are used in [`useAsyncData`](/docs/4.x/api/composables/use-async-data) to delete their cached data. If no keys are provided, **all data** will be invalidated.
|
|
@@ -14,10 +14,10 @@ This method is useful if you want to invalidate the state of `useState`.
|
|
|
14
14
|
|
|
15
15
|
## Type
|
|
16
16
|
|
|
17
|
-
```ts
|
|
18
|
-
clearNuxtState (keys?: string | string[] | ((key: string) => boolean)): void
|
|
17
|
+
```ts [Signature]
|
|
18
|
+
export function clearNuxtState (keys?: string | string[] | ((key: string) => boolean)): void
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
## Parameters
|
|
22
22
|
|
|
23
|
-
- `keys`: One or an array of keys that are used in [`useState`](/docs/api/composables/use-state) to delete their cached state. If no keys are provided, **all state** will be invalidated.
|
|
23
|
+
- `keys`: One or an array of keys that are used in [`useState`](/docs/4.x/api/composables/use-state) to delete their cached state. If no keys are provided, **all state** will be invalidated.
|
|
@@ -45,11 +45,11 @@ Use `createError` to trigger error handling in server API routes.
|
|
|
45
45
|
export default eventHandler(() => {
|
|
46
46
|
throw createError({
|
|
47
47
|
statusCode: 404,
|
|
48
|
-
statusMessage: 'Page Not Found'
|
|
48
|
+
statusMessage: 'Page Not Found',
|
|
49
49
|
})
|
|
50
50
|
})
|
|
51
51
|
```
|
|
52
52
|
|
|
53
53
|
In API routes, using `createError` by passing an object with a short `statusMessage` is recommended because it can be accessed on the client side. Otherwise, a `message` passed to `createError` on an API route will not propagate to the client. Alternatively, you can use the `data` property to pass data back to the client. In any case, always consider avoiding to put dynamic user input to the message to avoid potential security issues.
|
|
54
54
|
|
|
55
|
-
:read-more{to="/docs/getting-started/error-handling"}
|
|
55
|
+
:read-more{to="/docs/4.x/getting-started/error-handling"}
|
|
@@ -20,13 +20,13 @@ Hydrates the component when it becomes visible in the viewport.
|
|
|
20
20
|
<script setup lang="ts">
|
|
21
21
|
const LazyHydrationMyComponent = defineLazyHydrationComponent(
|
|
22
22
|
'visible',
|
|
23
|
-
() => import('./components/MyComponent.vue')
|
|
23
|
+
() => import('./components/MyComponent.vue'),
|
|
24
24
|
)
|
|
25
25
|
</script>
|
|
26
26
|
|
|
27
27
|
<template>
|
|
28
28
|
<div>
|
|
29
|
-
<!--
|
|
29
|
+
<!--
|
|
30
30
|
Hydration will be triggered when
|
|
31
31
|
the element(s) is 100px away from entering the viewport.
|
|
32
32
|
-->
|
|
@@ -53,7 +53,7 @@ Hydrates the component when the browser is idle. This is suitable if you need th
|
|
|
53
53
|
<script setup lang="ts">
|
|
54
54
|
const LazyHydrationMyComponent = defineLazyHydrationComponent(
|
|
55
55
|
'idle',
|
|
56
|
-
() => import('./components/MyComponent.vue')
|
|
56
|
+
() => import('./components/MyComponent.vue'),
|
|
57
57
|
)
|
|
58
58
|
</script>
|
|
59
59
|
|
|
@@ -81,7 +81,7 @@ Hydrates the component after a specified interaction (e.g., click, mouseover).
|
|
|
81
81
|
<script setup lang="ts">
|
|
82
82
|
const LazyHydrationMyComponent = defineLazyHydrationComponent(
|
|
83
83
|
'interaction',
|
|
84
|
-
() => import('./components/MyComponent.vue')
|
|
84
|
+
() => import('./components/MyComponent.vue'),
|
|
85
85
|
)
|
|
86
86
|
</script>
|
|
87
87
|
|
|
@@ -110,7 +110,7 @@ Hydrates the component when the window matches a media query.
|
|
|
110
110
|
<script setup lang="ts">
|
|
111
111
|
const LazyHydrationMyComponent = defineLazyHydrationComponent(
|
|
112
112
|
'mediaQuery',
|
|
113
|
-
() => import('./components/MyComponent.vue')
|
|
113
|
+
() => import('./components/MyComponent.vue'),
|
|
114
114
|
)
|
|
115
115
|
</script>
|
|
116
116
|
|
|
@@ -136,8 +136,8 @@ Hydrates the component after a specified delay (in milliseconds).
|
|
|
136
136
|
```vue
|
|
137
137
|
<script setup lang="ts">
|
|
138
138
|
const LazyHydrationMyComponent = defineLazyHydrationComponent(
|
|
139
|
-
'time',
|
|
140
|
-
() => import('./components/MyComponent.vue')
|
|
139
|
+
'time',
|
|
140
|
+
() => import('./components/MyComponent.vue'),
|
|
141
141
|
)
|
|
142
142
|
</script>
|
|
143
143
|
|
|
@@ -159,12 +159,12 @@ Hydrates the component based on a boolean condition.
|
|
|
159
159
|
<script setup lang="ts">
|
|
160
160
|
const LazyHydrationMyComponent = defineLazyHydrationComponent(
|
|
161
161
|
'if',
|
|
162
|
-
() => import('./components/MyComponent.vue')
|
|
162
|
+
() => import('./components/MyComponent.vue'),
|
|
163
163
|
)
|
|
164
164
|
|
|
165
165
|
const isReady = ref(false)
|
|
166
166
|
|
|
167
|
-
function myFunction() {
|
|
167
|
+
function myFunction () {
|
|
168
168
|
// Trigger custom hydration strategy...
|
|
169
169
|
isReady.value = true
|
|
170
170
|
}
|
|
@@ -188,7 +188,7 @@ Never hydrates the component.
|
|
|
188
188
|
<script setup lang="ts">
|
|
189
189
|
const LazyHydrationMyComponent = defineLazyHydrationComponent(
|
|
190
190
|
'never',
|
|
191
|
-
() => import('./components/MyComponent.vue')
|
|
191
|
+
() => import('./components/MyComponent.vue'),
|
|
192
192
|
)
|
|
193
193
|
</script>
|
|
194
194
|
|
|
@@ -208,11 +208,11 @@ All delayed hydration components emit a `@hydrated` event when they are hydrated
|
|
|
208
208
|
<script setup lang="ts">
|
|
209
209
|
const LazyHydrationMyComponent = defineLazyHydrationComponent(
|
|
210
210
|
'visible',
|
|
211
|
-
() => import('./components/MyComponent.vue')
|
|
211
|
+
() => import('./components/MyComponent.vue'),
|
|
212
212
|
)
|
|
213
213
|
|
|
214
|
-
function onHydrate() {
|
|
215
|
-
console.log(
|
|
214
|
+
function onHydrate () {
|
|
215
|
+
console.log('Component has been hydrated!')
|
|
216
216
|
}
|
|
217
217
|
</script>
|
|
218
218
|
|
|
@@ -25,11 +25,11 @@ If you choose not to use `setup()` in your app, you can use the `asyncData()` me
|
|
|
25
25
|
```vue [app/pages/index.vue]
|
|
26
26
|
<script lang="ts">
|
|
27
27
|
export default defineNuxtComponent({
|
|
28
|
-
|
|
28
|
+
asyncData () {
|
|
29
29
|
return {
|
|
30
30
|
data: {
|
|
31
|
-
greetings: 'hello world!'
|
|
32
|
-
}
|
|
31
|
+
greetings: 'hello world!',
|
|
32
|
+
},
|
|
33
33
|
}
|
|
34
34
|
},
|
|
35
35
|
})
|
|
@@ -43,9 +43,9 @@ If you choose not to use `setup()` in your app, you can use the `head()` method
|
|
|
43
43
|
```vue [app/pages/index.vue]
|
|
44
44
|
<script lang="ts">
|
|
45
45
|
export default defineNuxtComponent({
|
|
46
|
-
head(nuxtApp) {
|
|
46
|
+
head (nuxtApp) {
|
|
47
47
|
return {
|
|
48
|
-
title: 'My site'
|
|
48
|
+
title: 'My site',
|
|
49
49
|
}
|
|
50
50
|
},
|
|
51
51
|
})
|
|
@@ -16,14 +16,14 @@ export default defineNuxtPlugin((nuxtApp) => {
|
|
|
16
16
|
})
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
:read-more{to="/docs/guide/directory-structure/app/plugins#creating-plugins"}
|
|
19
|
+
:read-more{to="/docs/4.x/guide/directory-structure/app/plugins#creating-plugins"}
|
|
20
20
|
|
|
21
21
|
## Type
|
|
22
22
|
|
|
23
|
-
```ts
|
|
24
|
-
defineNuxtPlugin<T extends Record<string, unknown>>(plugin: Plugin<T> | ObjectPlugin<T>): Plugin<T> & ObjectPlugin<T>
|
|
23
|
+
```ts [Signature]
|
|
24
|
+
export function defineNuxtPlugin<T extends Record<string, unknown>> (plugin: Plugin<T> | ObjectPlugin<T>): Plugin<T> & ObjectPlugin<T>
|
|
25
25
|
|
|
26
|
-
type Plugin<T> = (nuxt:
|
|
26
|
+
type Plugin<T> = (nuxt: NuxtApp) => Promise<void> | Promise<{ provide?: T }> | void | { provide?: T }
|
|
27
27
|
|
|
28
28
|
interface ObjectPlugin<T> {
|
|
29
29
|
name?: string
|
|
@@ -32,7 +32,7 @@ interface ObjectPlugin<T> {
|
|
|
32
32
|
order?: number
|
|
33
33
|
parallel?: boolean
|
|
34
34
|
setup?: Plugin<T>
|
|
35
|
-
hooks?: Partial<
|
|
35
|
+
hooks?: Partial<RuntimeNuxtHooks>
|
|
36
36
|
env?: {
|
|
37
37
|
islands?: boolean
|
|
38
38
|
}
|
|
@@ -42,7 +42,7 @@ interface ObjectPlugin<T> {
|
|
|
42
42
|
## Parameters
|
|
43
43
|
|
|
44
44
|
**plugin**: A plugin can be defined in two ways:
|
|
45
|
-
1. **Function Plugin**: A function that receives the [`NuxtApp`](/docs/guide/going-further/internals#the-nuxtapp-interface) instance and can return a promise with an potential object with a [`provide`](/docs/guide/directory-structure/plugins#providing-helpers) property if you want to provide a helper on [`NuxtApp`](/docs/guide/going-further/internals#the-nuxtapp-interface) instance.
|
|
45
|
+
1. **Function Plugin**: A function that receives the [`NuxtApp`](/docs/4.x/guide/going-further/internals#the-nuxtapp-interface) instance and can return a promise with an potential object with a [`provide`](/docs/4.x/guide/directory-structure/plugins#providing-helpers) property if you want to provide a helper on [`NuxtApp`](/docs/4.x/guide/going-further/internals#the-nuxtapp-interface) instance.
|
|
46
46
|
2. **Object Plugin**: An object that can include various properties to configure the plugin's behavior, such as `name`, `enforce`, `dependsOn`, `order`, `parallel`, `setup`, `hooks`, and `env`.
|
|
47
47
|
|
|
48
48
|
| Property | Type | Required | Description |
|
|
@@ -69,8 +69,8 @@ export default defineNuxtPlugin((nuxtApp) => {
|
|
|
69
69
|
// Add a global method
|
|
70
70
|
return {
|
|
71
71
|
provide: {
|
|
72
|
-
hello: (name: string) => `Hello ${name}
|
|
73
|
-
}
|
|
72
|
+
hello: (name: string) => `Hello ${name}!`,
|
|
73
|
+
},
|
|
74
74
|
}
|
|
75
75
|
})
|
|
76
76
|
```
|
|
@@ -86,17 +86,17 @@ export default defineNuxtPlugin({
|
|
|
86
86
|
async setup (nuxtApp) {
|
|
87
87
|
// Plugin setup logic
|
|
88
88
|
const data = await $fetch('/api/config')
|
|
89
|
-
|
|
89
|
+
|
|
90
90
|
return {
|
|
91
91
|
provide: {
|
|
92
|
-
config: data
|
|
93
|
-
}
|
|
92
|
+
config: data,
|
|
93
|
+
},
|
|
94
94
|
}
|
|
95
95
|
},
|
|
96
96
|
hooks: {
|
|
97
|
-
'app:created'() {
|
|
97
|
+
'app:created' () {
|
|
98
98
|
console.log('App created!')
|
|
99
|
-
}
|
|
99
|
+
},
|
|
100
100
|
},
|
|
101
101
|
})
|
|
102
102
|
```
|
|
@@ -8,12 +8,12 @@ links:
|
|
|
8
8
|
size: xs
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
Route middleware are stored in the [`app/middleware/`](/docs/guide/directory-structure/app/middleware) of your Nuxt application (unless [set otherwise](/docs/api/nuxt-config#middleware)).
|
|
11
|
+
Route middleware are stored in the [`app/middleware/`](/docs/4.x/guide/directory-structure/app/middleware) of your Nuxt application (unless [set otherwise](/docs/4.x/api/nuxt-config#middleware)).
|
|
12
12
|
|
|
13
13
|
## Type
|
|
14
14
|
|
|
15
|
-
```ts
|
|
16
|
-
defineNuxtRouteMiddleware(middleware: RouteMiddleware)
|
|
15
|
+
```ts [Signature]
|
|
16
|
+
export function defineNuxtRouteMiddleware (middleware: RouteMiddleware): RouteMiddleware
|
|
17
17
|
|
|
18
18
|
interface RouteMiddleware {
|
|
19
19
|
(to: RouteLocationNormalized, from: RouteLocationNormalized): ReturnType<NavigationGuard>
|
|
@@ -48,7 +48,7 @@ The above route middleware will redirect a user to the custom error page defined
|
|
|
48
48
|
|
|
49
49
|
### Redirection
|
|
50
50
|
|
|
51
|
-
Use [`useState`](/docs/api/composables/use-state) in combination with `navigateTo` helper function inside the route middleware to redirect users to different routes based on their authentication status:
|
|
51
|
+
Use [`useState`](/docs/4.x/api/composables/use-state) in combination with `navigateTo` helper function inside the route middleware to redirect users to different routes based on their authentication status:
|
|
52
52
|
|
|
53
53
|
```ts [app/middleware/auth.ts]
|
|
54
54
|
export default defineNuxtRouteMiddleware((to, from) => {
|
|
@@ -64,4 +64,4 @@ export default defineNuxtRouteMiddleware((to, from) => {
|
|
|
64
64
|
})
|
|
65
65
|
```
|
|
66
66
|
|
|
67
|
-
Both [navigateTo](/docs/api/utils/navigate-to) and [abortNavigation](/docs/api/utils/abort-navigation) are globally available helper functions that you can use inside `defineNuxtRouteMiddleware`.
|
|
67
|
+
Both [navigateTo](/docs/4.x/api/utils/navigate-to) and [abortNavigation](/docs/4.x/api/utils/abort-navigation) are globally available helper functions that you can use inside `defineNuxtRouteMiddleware`.
|
|
@@ -8,25 +8,25 @@ links:
|
|
|
8
8
|
size: xs
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
`definePageMeta` is a compiler macro that you can use to set metadata for your **page** components located in the [`app/pages/`](/docs/guide/directory-structure/app/pages) directory (unless [set otherwise](/docs/api/nuxt-config#pages)). This way you can set custom metadata for each static or dynamic route of your Nuxt application.
|
|
11
|
+
`definePageMeta` is a compiler macro that you can use to set metadata for your **page** components located in the [`app/pages/`](/docs/4.x/guide/directory-structure/app/pages) directory (unless [set otherwise](/docs/4.x/api/nuxt-config#pages)). This way you can set custom metadata for each static or dynamic route of your Nuxt application.
|
|
12
12
|
|
|
13
13
|
```vue [app/pages/some-page.vue]
|
|
14
14
|
<script setup lang="ts">
|
|
15
15
|
definePageMeta({
|
|
16
|
-
layout: 'default'
|
|
16
|
+
layout: 'default',
|
|
17
17
|
})
|
|
18
18
|
</script>
|
|
19
19
|
```
|
|
20
20
|
|
|
21
|
-
:read-more{to="/docs/guide/directory-structure/app/pages#page-metadata"}
|
|
21
|
+
:read-more{to="/docs/4.x/guide/directory-structure/app/pages#page-metadata"}
|
|
22
22
|
|
|
23
23
|
## Type
|
|
24
24
|
|
|
25
|
-
```ts
|
|
26
|
-
definePageMeta(meta: PageMeta)
|
|
25
|
+
```ts [Signature]
|
|
26
|
+
export function definePageMeta (meta: PageMeta): void
|
|
27
27
|
|
|
28
28
|
interface PageMeta {
|
|
29
|
-
validate?: (route: RouteLocationNormalized) => boolean | Promise<boolean> | Partial<NuxtError> | Promise<Partial<NuxtError>>
|
|
29
|
+
validate?: ((route: RouteLocationNormalized) => boolean | Promise<boolean> | Partial<NuxtError> | Promise<Partial<NuxtError>>)
|
|
30
30
|
redirect?: RouteRecordRedirectOption
|
|
31
31
|
name?: string
|
|
32
32
|
path?: string
|
|
@@ -56,13 +56,13 @@ interface PageMeta {
|
|
|
56
56
|
|
|
57
57
|
- **Type**: `string`
|
|
58
58
|
|
|
59
|
-
You may define a name for this page's route. By default, name is generated based on path inside the [`app/pages/` directory](/docs/guide/directory-structure/app/pages).
|
|
59
|
+
You may define a name for this page's route. By default, name is generated based on path inside the [`app/pages/` directory](/docs/4.x/guide/directory-structure/app/pages).
|
|
60
60
|
|
|
61
61
|
**`path`**
|
|
62
62
|
|
|
63
63
|
- **Type**: `string`
|
|
64
64
|
|
|
65
|
-
You may define a [custom regular expression](#using-a-custom-regular-expression) if you have a more complex pattern than can be expressed with the file name.
|
|
65
|
+
You may define a [custom regular expression](/docs/4.x/api/composables/use-nuxt-app#using-a-custom-regular-expression) if you have a more complex pattern than can be expressed with the file name.
|
|
66
66
|
|
|
67
67
|
**`props`**
|
|
68
68
|
|
|
@@ -104,7 +104,7 @@ interface PageMeta {
|
|
|
104
104
|
|
|
105
105
|
- **Type**: `MiddlewareKey` | [`NavigationGuard`](https://router.vuejs.org/api/interfaces/NavigationGuard.html#navigationguard) | `Array<MiddlewareKey | NavigationGuard>`
|
|
106
106
|
|
|
107
|
-
Define anonymous or named middleware directly within `definePageMeta`. Learn more about [route middleware](/docs/guide/directory-structure/app/middleware).
|
|
107
|
+
Define anonymous or named middleware directly within `definePageMeta`. Learn more about [route middleware](/docs/4.x/guide/directory-structure/app/middleware).
|
|
108
108
|
|
|
109
109
|
**`pageTransition`**
|
|
110
110
|
|
|
@@ -116,7 +116,7 @@ interface PageMeta {
|
|
|
116
116
|
|
|
117
117
|
- **Type**: `boolean | 'always'`
|
|
118
118
|
|
|
119
|
-
**Experimental feature, only available when [enabled in your nuxt.config file](/docs/getting-started/transitions#view-transitions-api-experimental)**</br>
|
|
119
|
+
**Experimental feature, only available when [enabled in your nuxt.config file](/docs/4.x/getting-started/transitions#view-transitions-api-experimental)**</br>
|
|
120
120
|
Enable/disable View Transitions for the current page.
|
|
121
121
|
If set to true, Nuxt will not apply the transition if the users browser matches `prefers-reduced-motion: reduce` (recommended). If set to `always`, Nuxt will always apply the transition.
|
|
122
122
|
|
|
@@ -136,13 +136,13 @@ interface PageMeta {
|
|
|
136
136
|
|
|
137
137
|
- **Type**: `boolean | (to: RouteLocationNormalized, from: RouteLocationNormalized) => boolean`
|
|
138
138
|
|
|
139
|
-
Tell Nuxt to scroll to the top before rendering the page or not. If you want to overwrite the default scroll behavior of Nuxt, you can do so in `~/router.options.ts` (see [custom routing](/docs/guide/recipes/custom-routing#using-
|
|
139
|
+
Tell Nuxt to scroll to the top before rendering the page or not. If you want to overwrite the default scroll behavior of Nuxt, you can do so in `~/router.options.ts` (see [custom routing](/docs/4.x/guide/recipes/custom-routing#using-routeroptions)) for more info.
|
|
140
140
|
|
|
141
141
|
**`[key: string]`**
|
|
142
142
|
|
|
143
143
|
- **Type**: `any`
|
|
144
144
|
|
|
145
|
-
Apart from the above properties, you can also set **custom** metadata. You may wish to do so in a type-safe way by [augmenting the type of the `meta` object](/docs/guide/directory-structure/app/pages/#typing-custom-metadata).
|
|
145
|
+
Apart from the above properties, you can also set **custom** metadata. You may wish to do so in a type-safe way by [augmenting the type of the `meta` object](/docs/4.x/guide/directory-structure/app/pages/#typing-custom-metadata).
|
|
146
146
|
|
|
147
147
|
## Examples
|
|
148
148
|
|
|
@@ -157,13 +157,13 @@ The example below demonstrates:
|
|
|
157
157
|
```vue [app/pages/some-page.vue]
|
|
158
158
|
<script setup lang="ts">
|
|
159
159
|
definePageMeta({
|
|
160
|
-
key:
|
|
160
|
+
key: route => route.fullPath,
|
|
161
161
|
|
|
162
162
|
keepalive: {
|
|
163
|
-
exclude: ['modal']
|
|
163
|
+
exclude: ['modal'],
|
|
164
164
|
},
|
|
165
165
|
|
|
166
|
-
pageType: 'Checkout'
|
|
166
|
+
pageType: 'Checkout',
|
|
167
167
|
})
|
|
168
168
|
</script>
|
|
169
169
|
```
|
|
@@ -181,20 +181,20 @@ definePageMeta({
|
|
|
181
181
|
const auth = useState('auth')
|
|
182
182
|
|
|
183
183
|
if (!auth.value.authenticated) {
|
|
184
|
-
|
|
184
|
+
return navigateTo('/login')
|
|
185
185
|
}
|
|
186
186
|
|
|
187
187
|
if (to.path !== '/checkout') {
|
|
188
188
|
return navigateTo('/checkout')
|
|
189
189
|
}
|
|
190
|
-
}
|
|
190
|
+
},
|
|
191
191
|
],
|
|
192
192
|
|
|
193
193
|
// ... or a string
|
|
194
|
-
middleware: 'auth'
|
|
194
|
+
middleware: 'auth',
|
|
195
195
|
|
|
196
196
|
// ... or multiple strings
|
|
197
|
-
middleware: ['auth', 'another-named-middleware']
|
|
197
|
+
middleware: ['auth', 'another-named-middleware'],
|
|
198
198
|
})
|
|
199
199
|
</script>
|
|
200
200
|
```
|
|
@@ -210,7 +210,7 @@ To make sure that we are only matching digits (`\d+`) for `postId` in the `[post
|
|
|
210
210
|
```vue [app/pages/[postId\\]-[postSlug\\].vue]
|
|
211
211
|
<script setup lang="ts">
|
|
212
212
|
definePageMeta({
|
|
213
|
-
path: '/:postId(\\d+)-:postSlug'
|
|
213
|
+
path: '/:postId(\\d+)-:postSlug',
|
|
214
214
|
})
|
|
215
215
|
</script>
|
|
216
216
|
```
|
|
@@ -219,16 +219,16 @@ For more examples see [Vue Router's Matching Syntax](https://router.vuejs.org/gu
|
|
|
219
219
|
|
|
220
220
|
### Defining Layout
|
|
221
221
|
|
|
222
|
-
You can define the layout that matches the layout's file name located (by default) in the [`app/layouts/` directory](/docs/guide/directory-structure/app/layouts). You can also disable the layout by setting the `layout` to `false`:
|
|
222
|
+
You can define the layout that matches the layout's file name located (by default) in the [`app/layouts/` directory](/docs/4.x/guide/directory-structure/app/layouts). You can also disable the layout by setting the `layout` to `false`:
|
|
223
223
|
|
|
224
224
|
```vue [app/pages/some-page.vue]
|
|
225
225
|
<script setup lang="ts">
|
|
226
226
|
definePageMeta({
|
|
227
227
|
// set custom layout
|
|
228
|
-
layout: 'admin'
|
|
228
|
+
layout: 'admin',
|
|
229
229
|
|
|
230
230
|
// ... or disable a default layout
|
|
231
|
-
layout: false
|
|
231
|
+
layout: false,
|
|
232
232
|
})
|
|
233
233
|
</script>
|
|
234
234
|
```
|
|
@@ -8,7 +8,7 @@ links:
|
|
|
8
8
|
size: xs
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
::read-more{to="/docs/guide/going-further/experimental-features#inlinerouterules" icon="i-lucide-star"}
|
|
11
|
+
::read-more{to="/docs/4.x/guide/going-further/experimental-features#inlinerouterules" icon="i-lucide-star"}
|
|
12
12
|
This feature is experimental and in order to use it you must enable the `experimental.inlineRouteRules` option in your `nuxt.config`.
|
|
13
13
|
::
|
|
14
14
|
|
|
@@ -17,7 +17,7 @@ This feature is experimental and in order to use it you must enable the `experim
|
|
|
17
17
|
```vue [app/pages/index.vue]
|
|
18
18
|
<script setup lang="ts">
|
|
19
19
|
defineRouteRules({
|
|
20
|
-
prerender: true
|
|
20
|
+
prerender: true,
|
|
21
21
|
})
|
|
22
22
|
</script>
|
|
23
23
|
|
|
@@ -31,13 +31,13 @@ Will be translated to:
|
|
|
31
31
|
```ts [nuxt.config.ts]
|
|
32
32
|
export default defineNuxtConfig({
|
|
33
33
|
routeRules: {
|
|
34
|
-
'/': { prerender: true }
|
|
35
|
-
}
|
|
34
|
+
'/': { prerender: true },
|
|
35
|
+
},
|
|
36
36
|
})
|
|
37
37
|
```
|
|
38
38
|
|
|
39
39
|
::note
|
|
40
|
-
When running [`nuxt build`](/docs/api/commands/build), the home page will be pre-rendered in `.output/public/index.html` and statically served.
|
|
40
|
+
When running [`nuxt build`](/docs/4.x/api/commands/build), the home page will be pre-rendered in `.output/public/index.html` and statically served.
|
|
41
41
|
::
|
|
42
42
|
|
|
43
43
|
## Notes
|
|
@@ -45,8 +45,8 @@ When running [`nuxt build`](/docs/api/commands/build), the home page will be pre
|
|
|
45
45
|
- A rule defined in `~/pages/foo/bar.vue` will be applied to `/foo/bar` requests.
|
|
46
46
|
- A rule in `~/pages/foo/[id].vue` will be applied to `/foo/**` requests.
|
|
47
47
|
|
|
48
|
-
For more control, such as if you are using a custom `path` or `alias` set in the page's [`definePageMeta`](/docs/api/utils/define-page-meta), you should set `routeRules` directly within your `nuxt.config`.
|
|
48
|
+
For more control, such as if you are using a custom `path` or `alias` set in the page's [`definePageMeta`](/docs/4.x/api/utils/define-page-meta), you should set `routeRules` directly within your `nuxt.config`.
|
|
49
49
|
|
|
50
|
-
::read-more{to="/docs/guide/concepts/rendering#hybrid-rendering" icon="i-lucide-medal"}
|
|
50
|
+
::read-more{to="/docs/4.x/guide/concepts/rendering#hybrid-rendering" icon="i-lucide-medal"}
|
|
51
51
|
Read more about the `routeRules`.
|
|
52
52
|
::
|
|
@@ -10,7 +10,7 @@ links:
|
|
|
10
10
|
|
|
11
11
|
## Usage
|
|
12
12
|
|
|
13
|
-
`navigateTo` is available on both server side and client side. It can be used within the [Nuxt context](/docs/guide/going-further/nuxt-app#the-nuxt-context), or directly, to perform page navigation.
|
|
13
|
+
`navigateTo` is available on both server side and client side. It can be used within the [Nuxt context](/docs/4.x/guide/going-further/nuxt-app#the-nuxt-context), or directly, to perform page navigation.
|
|
14
14
|
|
|
15
15
|
::warning
|
|
16
16
|
Make sure to always use `await` or `return` on result of `navigateTo` when calling it.
|
|
@@ -35,8 +35,8 @@ await navigateTo({
|
|
|
35
35
|
path: '/search',
|
|
36
36
|
query: {
|
|
37
37
|
page: 1,
|
|
38
|
-
sort: 'asc'
|
|
39
|
-
}
|
|
38
|
+
sort: 'asc',
|
|
39
|
+
},
|
|
40
40
|
})
|
|
41
41
|
</script>
|
|
42
42
|
```
|
|
@@ -68,7 +68,7 @@ export default defineNuxtRouteMiddleware((to, from) => {
|
|
|
68
68
|
|
|
69
69
|
In this case, `navigateTo` will be executed but not returned, which may lead to unexpected behavior.
|
|
70
70
|
|
|
71
|
-
:read-more{to="/docs/guide/directory-structure/app/middleware"}
|
|
71
|
+
:read-more{to="/docs/4.x/guide/directory-structure/app/middleware"}
|
|
72
72
|
|
|
73
73
|
### Navigating to an External URL
|
|
74
74
|
|
|
@@ -92,7 +92,7 @@ await navigateTo('https://nuxt.com')
|
|
|
92
92
|
|
|
93
93
|
// will redirect successfully with the 'external' parameter set to 'true'
|
|
94
94
|
await navigateTo('https://nuxt.com', {
|
|
95
|
-
external: true
|
|
95
|
+
external: true,
|
|
96
96
|
})
|
|
97
97
|
</script>
|
|
98
98
|
```
|
|
@@ -107,20 +107,20 @@ await navigateTo('https://nuxt.com', {
|
|
|
107
107
|
target: '_blank',
|
|
108
108
|
windowFeatures: {
|
|
109
109
|
width: 500,
|
|
110
|
-
height: 500
|
|
111
|
-
}
|
|
112
|
-
}
|
|
110
|
+
height: 500,
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
113
|
})
|
|
114
114
|
</script>
|
|
115
115
|
```
|
|
116
116
|
|
|
117
117
|
## Type
|
|
118
118
|
|
|
119
|
-
```ts
|
|
120
|
-
function navigateTo(
|
|
119
|
+
```ts [Signature]
|
|
120
|
+
export function navigateTo (
|
|
121
121
|
to: RouteLocationRaw | undefined | null,
|
|
122
122
|
options?: NavigateToOptions
|
|
123
|
-
)
|
|
123
|
+
): Promise<void | NavigationFailure | false> | false | void | RouteLocationRaw
|
|
124
124
|
|
|
125
125
|
interface NavigateToOptions {
|
|
126
126
|
replace?: boolean
|
|
@@ -20,7 +20,7 @@ await prefetchComponents(['MyGlobalComponent1', 'MyGlobalComponent2'])
|
|
|
20
20
|
```
|
|
21
21
|
|
|
22
22
|
::note
|
|
23
|
-
Current implementation behaves exactly the same as [`preloadComponents`](/docs/api/utils/preload-components) by preloading components instead of just prefetching we are working to improve this behavior.
|
|
23
|
+
Current implementation behaves exactly the same as [`preloadComponents`](/docs/4.x/api/utils/preload-components) by preloading components instead of just prefetching we are working to improve this behavior.
|
|
24
24
|
::
|
|
25
25
|
|
|
26
26
|
::note
|
|
@@ -12,7 +12,7 @@ Preloading components loads components that your page will need very soon, which
|
|
|
12
12
|
|
|
13
13
|
Use `preloadComponents` to manually preload individual components that have been registered globally in your Nuxt app. By default Nuxt registers these as async components. You must use the Pascal-cased version of the component name.
|
|
14
14
|
|
|
15
|
-
```
|
|
15
|
+
```ts
|
|
16
16
|
await preloadComponents('MyGlobalComponent')
|
|
17
17
|
|
|
18
18
|
await preloadComponents(['MyGlobalComponent1', 'MyGlobalComponent2'])
|
|
@@ -14,7 +14,7 @@ Preloading routes loads the components of a given route that the user might navi
|
|
|
14
14
|
Nuxt already automatically preloads the necessary routes if you're using the `NuxtLink` component.
|
|
15
15
|
::
|
|
16
16
|
|
|
17
|
-
:read-more{to="/docs/api/components/nuxt-link"}
|
|
17
|
+
:read-more{to="/docs/4.x/api/components/nuxt-link"}
|
|
18
18
|
|
|
19
19
|
## Example
|
|
20
20
|
|
|
@@ -34,7 +34,7 @@ const submit = async () => {
|
|
|
34
34
|
}
|
|
35
35
|
```
|
|
36
36
|
|
|
37
|
-
:read-more{to="/docs/api/utils/navigate-to"}
|
|
37
|
+
:read-more{to="/docs/4.x/api/utils/navigate-to"}
|
|
38
38
|
|
|
39
39
|
::note
|
|
40
40
|
On server, `preloadRouteComponents` will have no effect.
|
|
@@ -11,14 +11,14 @@ links:
|
|
|
11
11
|
When prerendering, you can hint to Nitro to prerender additional paths, even if their URLs do not show up in the HTML of the generated page.
|
|
12
12
|
|
|
13
13
|
::important
|
|
14
|
-
`prerenderRoutes` can only be called within the [Nuxt context](/docs/guide/going-further/nuxt-app#the-nuxt-context).
|
|
14
|
+
`prerenderRoutes` can only be called within the [Nuxt context](/docs/4.x/guide/going-further/nuxt-app#the-nuxt-context).
|
|
15
15
|
::
|
|
16
16
|
|
|
17
17
|
::note
|
|
18
18
|
`prerenderRoutes` has to be executed during prerendering. If the `prerenderRoutes` is used in dynamic pages/routes which are not prerendered, then it will not be executed.
|
|
19
19
|
::
|
|
20
20
|
|
|
21
|
-
```
|
|
21
|
+
```ts
|
|
22
22
|
const route = useRoute()
|
|
23
23
|
|
|
24
24
|
prerenderRoutes('/')
|
|
@@ -31,7 +31,7 @@ In the browser, or if called outside prerendering, `prerenderRoutes` will have n
|
|
|
31
31
|
|
|
32
32
|
You can even prerender API routes which is particularly useful for full statically generated sites (SSG) because you can then `$fetch` data as if you have an available server!
|
|
33
33
|
|
|
34
|
-
```
|
|
34
|
+
```ts
|
|
35
35
|
prerenderRoutes('/api/content/article/name-of-article')
|
|
36
36
|
|
|
37
37
|
// Somewhere later in App
|
|
@@ -27,7 +27,7 @@ This is useful for updating the `useCookie` ref when we know the new cookie valu
|
|
|
27
27
|
const tokenCookie = useCookie('token')
|
|
28
28
|
|
|
29
29
|
const login = async (username, password) => {
|
|
30
|
-
const token = await $fetch('/api/token', { ... }) // Sets `token` cookie on response
|
|
30
|
+
const token = await $fetch('/api/token', { /** ... */ }) // Sets `token` cookie on response
|
|
31
31
|
refreshCookie('token')
|
|
32
32
|
}
|
|
33
33
|
|
|
@@ -35,12 +35,12 @@ const loggedIn = computed(() => !!tokenCookie.value)
|
|
|
35
35
|
</script>
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
-
::note{to="/docs/guide/going-further/experimental-features#cookiestore"}
|
|
38
|
+
::note{to="/docs/4.x/guide/going-further/experimental-features#cookiestore"}
|
|
39
39
|
You can enable experimental `cookieStore` option to automatically refresh `useCookie` value when cookie changes in the browser.
|
|
40
40
|
::
|
|
41
41
|
|
|
42
42
|
## Type
|
|
43
43
|
|
|
44
|
-
```ts
|
|
45
|
-
refreshCookie(name: string): void
|
|
44
|
+
```ts [Signature]
|
|
45
|
+
export function refreshCookie (name: string): void
|
|
46
46
|
```
|