Next.js: Метаданные на страницах — Урок 7

Переходя между страницами, вы заметите, что title и другие метаданные на всех страницах одинаковы. Это происходит потому, что у нас один общий шаблон в папке layout, с экспортируемым объектом metadata, содержащим title и description.

Изменение метаданных на отдельных страницах

Чтобы изменить метаданные на конкретной странице, скопируйте объект metadata из файла layout и вставьте его в файл page.js соответствующей страницы (например, about/page.js). Задайте новые значения:

export const metadata = {
  title: 'Страница про нас',
  description: 'Страница про нас'
};

После сохранения, на странице /about будут отображаться новые значения title и description. Проверить это можно, просмотрев исходный код страницы.

Добавление и динамическая генерация метаданных

Помимо title и description, можно добавлять другие метаданные, например, keywords:

export const metadata = {
  title: 'Заголовок страницы',
  description: 'Описание страницы',
  keywords: 'ключевые, слова, страницы'
};

Аналогично можно добавить любые другие метатеги, например, author, main и т.д.

Для динамической генерации метаданных, например, для отдельных постов, используйте асинхронную функцию:

export async function generateMetadata() {
  const post = await fetchPageData(params.id); // params.id берется из URL
  return {
    title: `Пост ${post.id} – статья на сайте`,
    description: post.body
  };
}

В этом примере функция fetchPageData получает данные поста по ID из URL. Затем, возвращается объект metadata с динамически сгенерированными title и description.

Правильно настроенные метаданные необходимы для SEO-оптимизации сайта. В Next.js это реализовано на стороне сервера, в отличие от React, где генерация происходит в браузере, что делает данную возможность более эффективной.

Что будем искать? Например,программа