Nuxt3の基本
kurumin
プログラミングのーと
nuxt.config.tsでのデフォルト<head>設定全体のデフォルトの<head>設定を行う場合、nuxt.config.tsにappConfigのheadプロパティを使用します。
export default defineNuxtConfig({
app: {
head: {
title: 'デフォルトのタイトル - Nuxt 3',
meta: [
{ name: 'description', content: 'デフォルトの説明文' }
],
link: [
{ rel: 'stylesheet', href: '/global.css' }
]
}
}
});nuxt.config.tsでアプリ全体の<head>設定を行える。useHeadで上書きすることも可能。app.vueでグローバルな<head>を設定するすべてのページに共通する<head>の内容を設定する場合は、app.vueが適切。
<template>
<NuxtPage />
</template>
<script setup>
useHead({
titleTemplate: '%s - My Nuxt 3 App',
meta: [
{ charset: 'utf-8' },
{ name: 'viewport', content: 'width=device-width, initial-scale=1' }
]
});
</script>app.vueが全体のエントリーポイントとして利用される。titleTemplateを使ってページごとにタイトルを動的に変えられる。<head>設定APIから動的にデータを取得し、それを<head>に反映する例。
<template>
<div>
<h1>{{ article?.title }}</h1>
</div>
</template>
<script setup>
const { data: article } = await useAsyncData('article', () =>
$fetch('https://api.example.com/article/1')
);
useHead({
title: article.value?.title || 'デフォルトのタイトル',
meta: [
{ name: 'description', content: article.value?.description || 'デフォルトの説明文' }
]
});
</script>
$fetchが推奨され、ブラウザ・サーバー両方で利用可能。useAsyncDataで非同期データを取得し、サーバーサイドレンダリングに対応。useHeadを使ったページごとの設定(Nuxt 3版)<template>
<div>
<h1>ホームページ</h1>
</div>
</template>
<script setup>
useHead({
title: 'ホームページ - Nuxt 3サイト',
meta: [
{ name: 'description', content: 'これはNuxt 3のホームページの説明です。' }
],
link: [
{ rel: 'icon', href: '/favicon.ico' }
]
});
</script>
@unhead/vueを使わずに直接useHeadをインポート不要で使用可能。
setup関数内での使用が推奨されている。