nuxt logo

ドキュメント翻訳(非公式)

useSeoMeta

useSeoMeta コンポーザブルを使用すると、サイトの SEO メタタグをフラットなオブジェクトとして定義でき、完全な TypeScript サポートがあります。

これにより、name の代わりに property を使用するなどの一般的なミスや、タイプミスを避けることができます。100以上のメタタグが完全に型付けされています。

これは、XSS 安全で完全な TypeScript サポートがあるため、サイトにメタタグを追加する推奨方法です。

こちらも参照 getting-started > seo-meta

使用法

app.vue
useSeoMeta({
  title: 'My Amazing Site',
  ogTitle: 'My Amazing Site',
  description: 'This is my amazing site, let me tell you all about it.',
  ogDescription: 'This is my amazing site, let me tell you all about it.',
  ogImage: 'https://example.com/image.png',
  twitterCard: 'summary_large_image',
})

リアクティブなタグを挿入する場合は、computed getter 構文 (() => value) を使用する必要があります:

app.vue
const title = ref('My title')

useSeoMeta({
  title,
  description: () => `This is a description for the ${title.value} page`
})

パラメータ

100以上のパラメータがあります。ソースコード内のパラメータの完全なリストを参照してください。

こちらも参照 getting-started > seo-meta

パフォーマンス

ほとんどの場合、SEO メタタグはリアクティブである必要はありません。検索エンジンのロボットは主に初回のページロードをスキャンするためです。

より良いパフォーマンスのために、メタタグがリアクティブである必要がない場合は、useSeoMeta 呼び出しをサーバー専用の条件でラップすることができます:

app.vue
if (import.meta.server) {
  // これらのメタタグはサーバーサイドレンダリング中にのみ追加されます
  useSeoMeta({
    robots: 'index, follow',
    description: 'Static description that does not need reactivity',
    ogImage: 'https://example.com/image.png',
    // 他の静的メタタグ...
  })
}

const dynamicTitle = ref('My title')
// 必要な場合のみ、条件外でリアクティブなメタタグを使用します
useSeoMeta({
  title: () => dynamicTitle.value,
  ogTitle: () => dynamicTitle.value,
})

これは以前は useServerSeoMeta コンポーザブルを使用していましたが、このアプローチが推奨されるようになりました。