Skip to content
This repository has been archived by the owner on Apr 6, 2023. It is now read-only.

docs(getting-started): add views page #7556

Merged
merged 15 commits into from
Sep 20, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/.gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
schema
**/*.configuration/nuxt.config.md
**/*.configuration/nuxt-config.md
125 changes: 121 additions & 4 deletions docs/content/1.getting-started/3.views.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,130 @@
# Views

::NeedContribution
Nuxt provides several component layers to implement the user interface of your application.

## `app.vue`

![The `app.vue` file is the entry point of your application](/img/getting-started/views/app.svg)

By default, Nuxt will treat this file as the **entrypoint** and render its content for every route of the application.

```vue [app.vue]
<template>
<div>
<h1>Welcome to the homepage</h1>
</div>
</template>
```

::alert
If you are familiar with Vue, you might wonder where `main.js` is (the file is that normally creates a Vue app). Nuxt does this behind the scene.
::

## Components

![Components are reusable pieces of UI](/img/getting-started/views/components.svg)

Most components are reusable pieces of the user interface, like buttons and menus. In Nuxt, you can create these components in the `components/` directory, and they will be automatically available across your application without having to explicitly import them.

::code-group

```vue [App.vue]
<template>
<div>
<h1>Welcome to the homepage</h1>
<AppAlert>
This is an auto-imported component.
</AppAlert>
</div>
</template>
```

```vue [components/AppAlert.vue]
<template>
<span>
<slot />
</span>
</template>
```

::

## Pages

![Pages are views tied to a specific route](/img/getting-started/views/pages.svg)

Pages represent views use for each specific route pattern. Every file in the `pages/` directory represents a different route displaying its content.

To use pages, create `pages/index.vue` file and add `<NuxtPage />` component to the `app.vue` (or remove `app.vue` for default entry). You can now create more pages and their corresponding routes by adding new files in the `pages/` directory.

::code-group

```vue [pages/index.vue]
<template>
<div>
<h1>Welcome to the homepage</h1>
<AppAlert>
This is an auto-imported component
</AppAlert>
</div>
</template>
```

```vue [pages/about.vue]
<template>
<section>
<p>This page will be displayed at the /about route.</p>
</section>
</template>
```

::

::ReadMore{link="/guide/directory-structure/components"}
::alert
You will learn more about pages in the [Routing section](/getting-started/routing)
::

::ReadMore{link="/guide/directory-structure/pages"}
## Layouts

![Layouts are wrapper around pages](/img/getting-started/views/layouts.svg)

Layouts are wrappers around pages that contain a common User Interface for several pages, such as a header and footer display. Layouts are Vue files using `<slot />` components to display the **page** content. The `layout/default.vue` file will be used by default. Custom layouts can be set as part of your page metadata.

::alert
If you only have a single layout in your application, we recommend using app.vue with the [`<NuxtPage />` component](/api/components/nuxt-page) instead.
::

::ReadMore{link="/guide/directory-structure/layouts"}
::code-group

```vue [layouts/default.vue]
<template>
<div>
<AppHeader />
<slot />
<AppFooter />
</div>
</template>
```

```vue [pages/index.vue]
<template>
<div>
<h1>Welcome to the homepage</h1>
<AppAlert>
This is an auto-imported component
</AppAlert>
</div>
</template>
```

```vue [pages/about.vue]
<template>
<section>
<p>This page will be displayed at the /about route.</p>
</section>
</template>
```

::

If you want to create more layouts and learn how to use them in your pages, find more information in the [Layouts section](/guide/directory-structure/layouts).
1 change: 1 addition & 0 deletions docs/static/img/getting-started/views/app.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions docs/static/img/getting-started/views/components.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading