Nuxt Nation カンファレンスが開催されます。11月12日~13日にご参加ください。

ビュー

Nuxt は、アプリケーションのユーザーインターフェースを実装するためのいくつかのコンポーネントレイヤーを提供します。

app.vue

The app.vue file is the entry point of your application

デフォルトでは、Nuxt はこのファイルをエントリポイントとして扱い、アプリケーションのすべてのルートに対してその内容をレンダリングします。

app.vue
<template>
  <div>
   <h1>Welcome to the homepage</h1>
  </div>
</template>
Vue に詳しい方は、通常 Vue アプリケーションを作成するファイルである main.js がどこにあるのか疑問に思うかもしれません。Nuxt はこれを裏側で行います。

コンポーネント

Components are reusable pieces of UI

ほとんどのコンポーネントは、ボタンやメニューなどの再利用可能なユーザーインターフェースの断片です。Nuxt では、これらのコンポーネントを components/ ディレクトリに作成すると、明示的にインポートすることなく、アプリケーション全体で自動的に利用できるようになります。

<template>
  <div>
    <h1>Welcome to the homepage</h1>
    <AppAlert>
      This is an auto-imported component.
    </AppAlert>
  </div>
</template>

ページ

Pages are views tied to a specific route

ページは、特定のルートパターンごとのビューを表します。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>
ルーティングセクションで詳しく読んでください。

レイアウト

Layouts are wrapper around pages

レイアウトは、複数のページで共通のユーザーインターフェース (ヘッダーやフッターなど) を含む、ページを囲むラッパーです。レイアウトは、ページの内容を表示するために <slot /> コンポーネントを使用する Vue ファイルです。layouts/default.vue ファイルはデフォルトで使用されます。カスタムレイアウトは、ページメタデータの一部として設定できます。

アプリケーションにレイアウトが 1 つしかない場合は、代わりに app.vue<NuxtPage /> と一緒に使用することをお勧めします。
<template>
  <div>
    <NuxtLayout>
      <NuxtPage />
    </NuxtLayout>
  </div>
</template>

より多くのレイアウトを作成し、ページでそれらを使用する方法を学ぶ場合は、レイアウトセクションで詳細情報を確認してください。

高度な設定: HTML テンプレートの拡張

<head> のみを変更する必要がある場合は、SEO およびメタセクションを参照してください。

フックを登録する Nitro プラグインを追加することで、HTML テンプレートを完全に制御できます。render:html フックのコールバック関数を使用すると、クライアントに送信される前に HTML を変更できます。

server/plugins/extend-html.ts
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
) })
})
ドキュメント > ガイド > さらに詳しく > フックで詳しく読んでください。