mirror of
https://github.com/nuxt/nuxt.git
synced 2025-01-18 17:35:57 +00:00
parent
44aeaae941
commit
e2f5a3c9b0
@ -1 +1,16 @@
|
|||||||
# App.vue
|
# App.vue
|
||||||
|
|
||||||
|
The new `app.vue` file, is the main component in your Nuxt3 applications.
|
||||||
|
|
||||||
|
If you would like to customize default layout of website, create `app.vue` in your project directory. Nuxt will automatically detect it and load it as the parent of all other pages within your application.
|
||||||
|
|
||||||
|
|
||||||
|
**Note:** Don't forget to use `<NuxtPage>` component somewhere inside `app.vue`.
|
||||||
|
|
||||||
|
```vue [app.vue]
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<NuxtPage />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
```
|
||||||
|
@ -1 +1,23 @@
|
|||||||
# Pages
|
# Pages
|
||||||
|
|
||||||
|
Nuxt will automatically integrate [Vue Router](https://next.router.vuejs.org/) and map `pages/` directory into the routes of your application.
|
||||||
|
|
||||||
|
If you place anything within square brackets, it will be turned into a [dynamic route](https://next.router.vuejs.org/guide/essentials/dynamic-matching.html) parameter. You can mix and match multiple parameters and even non-dynamic text within a file name or directory.
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
```bash
|
||||||
|
-| pages/
|
||||||
|
---| index.vue
|
||||||
|
---| users-[group]/
|
||||||
|
-----| [userid].vue
|
||||||
|
```
|
||||||
|
|
||||||
|
Given the example above, you can access group/userid within your component via the `$route` object:
|
||||||
|
|
||||||
|
```vue
|
||||||
|
<template>
|
||||||
|
{{ $route.params.group }}
|
||||||
|
{{ $route.params.id }}
|
||||||
|
</template>
|
||||||
|
```
|
||||||
|
@ -1 +1,41 @@
|
|||||||
# Data Fetching
|
# Data Fetching
|
||||||
|
|
||||||
|
Nuxt provides `asyncData` to handle data fetching within you application.
|
||||||
|
|
||||||
|
## `asyncData`
|
||||||
|
|
||||||
|
Within your pages and components you can use `asyncData` to get access to data that resolves asynchronously. (This helper only works within a component defined with `defineNuxtComponent`).
|
||||||
|
|
||||||
|
### Usage
|
||||||
|
|
||||||
|
```js
|
||||||
|
asyncData(key: string, fn: () => Object, options?: { defer: boolean, server: boolean })
|
||||||
|
```
|
||||||
|
|
||||||
|
* **key**: a unique key to ensure that data fetching can be properly de-duplicated across requests
|
||||||
|
* **fn** an asynchronous function that must return an object.
|
||||||
|
* **options**:
|
||||||
|
- _defer_: whether to load the route before resolving the async function (defaults to `false`)
|
||||||
|
- _server_: whether the fetch the data on server-side (defaults to `true`)
|
||||||
|
|
||||||
|
Under the hood, `defer: false` uses `<Suspense>` to block the loading of the route before the data has been fetched. Consider using `defer: true` and implementing a loading state instead for a snappier user experience.
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
```vue
|
||||||
|
<template>
|
||||||
|
Page visits: {{ data.count }}
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { asyncData, defineNuxtComponent } from '@nuxt/app'
|
||||||
|
|
||||||
|
export default defineNuxtComponent({
|
||||||
|
setup () {
|
||||||
|
const { data } = asyncData('time', () => $fetch('/api/count'))
|
||||||
|
return { data }
|
||||||
|
}
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
```
|
||||||
|
|
||||||
|
@ -1 +1,3 @@
|
|||||||
# Plugins
|
# Plugins
|
||||||
|
|
||||||
|
Nuxt will automatically read the files in your `plugins` directory and load them. You can use `.server` or `.client` in the file name to load a plugin just on server- or client-side.
|
||||||
|
Loading…
Reference in New Issue
Block a user