Next.jsの理解を深める!Chapter 16-17
Chapter 16(first)
What is metadata?
In web development, metadata provides additional details about a webpage. Metadata is not visible to the users visiting the page. Instead, it works behind the scenes, embedded within the page's HTML, usually within the <head> element. This hidden information is crucial for search engines and other systems that need to understand your webpage's content better.
-
メタデータ
とはWeb開発においてWebページに関する追加の詳細情報を提供する。メタデータ
はWebページを訪れるユーザーには直接見えず、WebページのHTML、通常は<head> 要素
に埋め込まれ、裏で機能する。この隠された情報は、Webページの内容をよりよく理解する必要がある検索エンジンやその他のシステムにとって重要である。
Why is metadata important?
Metadata plays a significant role in enhancing a webpage's SEO, making it more accessible and understandable for search engines and social media platforms. Proper metadata helps search engines effectively index webpages, improving their ranking in search results. Additionally, metadata like Open Graph improves the appearance of shared links on social media, making the content more appealing and informative for users.
-
メタデータ
は、WebページのSEOを強化する上で重要な役割を果たす。これにより検索エンジンやソーシャルメディアプラットフォームがWebページをよりアクセスしやすく、理解しやすくなる。適切なメタデータ
は検索エンジンがWebページを効果的にインデックス化するのを助け、検索結果でのランキングを改善する。さらに、オープングラフ
のようなメタデータ
は、ソーシャルメディアで共有されるリンクの見栄えを改善し、ユーザーに対しコンテンツをより魅力的で情報豊富に見せる効果がある。
Types of metadata
Title Metadata: Responsible for the title of a webpage that is displayed on the browser tab. It's crucial for SEO as it helps search engines understand what the webpage is about.
<title>Page Title</title>
Description Metadata: This metadata provides a brief overview of the webpage content and is often displayed in search engine results.
<meta name="description" content="A brief description of the page content." />
Keyword Metadata: This metadata includes the keywords related to the webpage content, helping search engines index the page.
<meta name="keywords" content="keyword1, keyword2, keyword3" />
Open Graph Metadata: This metadata enhances the way a webpage is represented when shared on social media platforms, providing information such as the title, description, and preview image.
<meta property="og:title" content="Title Here" />
<meta property="og:description" content="Description Here" />
<meta property="og:image" content="image_url_here" />
Favicon Metadata: This metadata links the favicon (a small icon) to the webpage, displayed in the browser's address bar or tab.
<link rel="icon" href="path/to/favicon.ico" />
Chapter 16(second)
Adding metadata
Next.js has a Metadata API that can be used to define your application metadata. There are two ways you can add metadata to your application:
Config-based: Export a static metadata object or a dynamic generateMetadata function in a layout.js or page.js file.
File-based: Next.js has a range of special files that are specifically used for metadata purposes:
favicon.ico, apple-icon.jpg, and icon.jpg: Utilized for favicons and icons
opengraph-image.jpg and twitter-image.jpg: Employed for social media images
robots.txt: Provides instructions for search engine crawling
sitemap.xml: Offers information about the website's structure
You have the flexibility to use these files for static metadata, or you can generate them programmatically within your project.
With both these options, Next.js will automatically generate the relevant <head> elements for your pages.
-
Next.js
には、アプリケーションのメタデータ
を定義するためのメタデータAPIがある。
アプリケーションにメタデータ
を追加する方法は2つある。
設定ベース
:layout.js
やpage.js
ファイルで、静的なメタデータオブジェクトまたは動的なgenerateMetadata
関数をエクスポートします。
ファイルベース
:Next.js
にはメタデータ
目的の為に特別に使用されるさまざまな特別なファイルがある。
favicon.ico
apple-icon.jpg
icon.jpg
:ファビコンやアイコンとして利用される。
opengraph-image.jpg
twitter-image.jpg
:ソーシャルメディアの画像として使用される。
robots.txt
:検索エンジンのクローリングに関する指示を提供する。
sitemap.xml
:ウェブサイトの構造に関する情報を提供する。
これらのファイルを静的なメタデータとして使用することもプロジェクト内でプログラム的に生成することもできる。これらの両方のオプションを使用するとNext.js
はページのための関連する<head>要素
を自動的に生成する。
Favicon and Open Graph image
In your /public folder, you'll notice you have two images: favicon.ico and opengraph-image.jpg.
Move these images to the root of your /app folder.
After doing this, Next.js will automatically identify and use these files as your favicon and OG image. You can verify this by checking the <head> element of your application in dev tools.
-
/public
フォルダのfavicon.ico
とopengraph-image.jpg
の2つの画像を/app
フォルダのルートに移動する。これを行うとNext.js
は自動的にこれらのファイルをファビコンとOGイメージ(Open Graphイメージ)として識別し使用する。
Page title and descriptions
You can also include a metadata object from any layout.js or page.js file to add additional page information like title and description. Any metadata in layout.js will be inherited by all pages that use it.
In your root layout, create a new metadata object with the following fields:
import { Metadata } from 'next';
export const metadata: Metadata = {
title: 'Acme Dashboard',
description: 'The official Next.js Course Dashboard, built with App Router.',
metadataBase: new URL('https://next-learn-dashboard.vercel.sh'),
};
export default function RootLayout() {
// ...
}
-
layout.js
またはpage.js
からメタデータオブジェクトを含めることで、タイトルや説明などの追加ページ情報を指定できる。layout.js
内のメタデータはそれを使用するすべてのページに継承される。
Next.js will automatically add the title and metadata to your application.
But what if you want to add a custom title for a specific page? You can do this by adding a metadata object to the page itself. Metadata in nested pages will override the metadata in the parent.
For example, in the /dashboard/invoices page, you can update the page title:
import { Metadata } from 'next';
export const metadata: Metadata = {
title: 'Invoices | Acme Dashboard',
};
- 特定のページにカスタムタイトルを追加したい場合はページ自体にメタデータオブジェクトを追加する。ネストされたページ内のメタデータは、親ページのメタデータを上書きする。
Chapter 16(third)
you can use the title.template field in the metadata object to define a template for your page titles. This template can include the page title, and any other information you want to include.
In your root layout, update the metadata object to include a template:
import { Metadata } from 'next';
export const metadata: Metadata = {
title: {
template: '%s | Acme Dashboard',
default: 'Acme Dashboard',
},
description: 'The official Next.js Learn Dashboard built with App Router.',
metadataBase: new URL('https://next-learn-dashboard.vercel.sh'),
};
export const metadata: Metadata = {
title: 'Invoices',
};
- メタデータオブジェクトの
title.template
を使うとページタイトルのためのテンプレートを定義できる。このテンプレートにはページタイトルや、含めたいその他の情報を含むことができる。
-
generateMetadata
を使用することによって動的にメタデータを設定できる。
Chapter 17