ビュー
Nuxtは、アプリケーションのユーザーインターフェースを実装するためのいくつかのコンポーネントレイヤーを提供しています。
app.vue
デフォルトでは、Nuxtはこのファイルをエントリーポイントとして扱い、アプリケーションのすべてのルートに対してその内容をレンダリングします。
<template>
<div>
<h1>Welcome to the homepage</h1>
</div>
</template>
Vueに詳しい方は、main.js
はどこにあるのか(通常Vueアプリを作成するファイル)疑問に思うかもしれません。Nuxtはこれを裏側で処理します。
コンポーネント
ほとんどのコンポーネントは、ボタンやメニューのようなユーザーインターフェースの再利用可能な部分です。Nuxtでは、これらのコンポーネントを components/
ディレクトリに作成すると、それらは明示的にインポートすることなくアプリケーション全体で自動的に利用可能になります。
<template>
<div>
<h1>Welcome to the homepage</h1>
<AppAlert>
This is an auto-imported component.
</AppAlert>
</div>
</template>
ページ
ページは各特定のルートパターンのビューを表します。pages/
ディレクトリの各ファイルは、異なるルートがその内容を表示するのを表します。
ページを使用するには、pages/index.vue
ファイルを作成し、app.vue
に <NuxtPage />
コンポーネントを追加します(デフォルトのエントリーとするためには app.vue
を削除します)。これで、pages/
ディレクトリに新しいファイルを追加することで、さらに多くのページとそれに対応するルートを作成することができます。
<template>
<div>
<h1>Welcome to the homepage</h1>
<AppAlert>
This is an auto-imported component
</AppAlert>
</div>
</template>
レイアウト
レイアウトはヘッダーやフッター表示など、複数のページで共通のユーザーインターフェースを含むページの包括部分です。レイアウトは <slot />
コンポーネントを使用した Vue ファイルで、ページの内容を表示します。 layouts/default.vue
ファイルはデフォルトで使用されます。カスタムレイアウトはページのメタデータの一部として設定できます。
アプリケーションに単一のレイアウトしかない場合は、 app.vue
に <NuxtPage />
を使用することを推奨します。
<template>
<div>
<NuxtLayout>
<NuxtPage />
</NuxtLayout>
</div>
</template>
もっと多くのレイアウトを作成し、ページでそれらをどのように使用するかを学びたい場合は、レイアウトセクションで詳細を見つけることができます。
上級者向け:HTMLテンプレートの拡張
<head>
のみを変更する必要がある場合は、 SEOとメタセクションを参照してください。
Nitroプラグインを追加してフックを登録することで、HTMLテンプレートに完全なコントロールを持つことができます。
render:html
フックのコールバック関数は、HTMLがクライアントに送信される前にHTMLを変更することができます。
export default defineNitroPlugin((nitroApp) => {
nitroApp.hooks.hook('render:html', (html, { event }) => {
// This will be an object representation of the html template.
console.log(html)
html.head.push(`<meta name="description" content="My custom description" />`)
})
// You can also intercept the response here.
nitroApp.hooks.hook('render:response', (response, { event }) => { console.log(response) })
})
※このページは Nuxt.js 公式ドキュメントの翻訳ページ(非公式)です。
公式ドキュメントの該当ページはこちら:
https://nuxt.com/docs/3.x/getting-started/views