metadata 를 간단하게 사용하고 있다가 다양하게 사용할 수 있는 걸
알게 되어 정리해 보았습니다.
설명
metadata 를 모른다면 개인적으로 조금 공부하고 오거나 제 블로그에 next.js 소개 part 부분을 읽어 보시면 좋습니다.
기본적인 metadata 활용은 아래처럼 사용 할 수 있습니다.
export const metadata = {
title: "next.js",
description: "hello next.js"
}
하지만 항상 페이지별로 metadata 를 적용하고 설명하고 추가하고 하는것은 귀찮을 수 있기 때문에 동적으로 만들 수도 있습니다.
import { Metadata } from 'next';
export const metadata:Metadata = {
title: {
template: "%s | Next Movies",
default: "Loading..."
},
description: 'Generated by Next.js',
}
// 다른곳에서
export const metadata:Metadata = {
title: "not found"
}
만약 블로그 홈페이지를 제작하고 있다고 생각해 봅시다.
블로그 홈페이지에 특정 페이지는 몇개의 댓글이 있는지 metadata 에 포함시키고 싶을 수 있습니다.
그럴 때 사용할 수 있는 코드가 아래에 있습니다.
export async function generateMetadata() {
const posts = await getPosts();
const number = posts.length;
return {
title: `Browse all our ${number}`,
description: "Browse all our posts"
}
}
여기서 주의해야 할 점은 generateMetadata 라는 이름은 규칙이기 때문에 바꾸시면 안됩니다.
이렇게 설정을 하면 next.js 에서는 자동으로 해당 generateMetadata 을 metadata 로 인식하게 됩니다.
심화 버전
정적, HTML 태그 메타 데이터
metadata 를 이용해서 정적, HTML 태그 를 넣어줄 수 있습니다.
아래 코드들은 HTML 메타 태그와 정적 메타데이터를 설정하는 데 사용됩니다.
이 설정은 웹 페이지의 `<head>` 섹션에 포함되며, 다양한 메타데이터를 정의할 수 있습니다.
`generator`: 사이트를 생성한 기술 스택 또는 프레임워크.
`applicationName`: 애플리케이션 이름.
`referrer`: 참조 정책 설정.
`keywords`: 검색 엔진 최적화를 위한 키워드.
`authors`: 사이트의 작성자.
`colorScheme`: 사이트의 색상 테마 (예: 다크 모드).
`creator`: 사이트의 제작자.
`publisher`: 사이트의 발행자.
`alternates`: 대체 리소스 링크.
`formatDetection`: 이메일, 주소, 전화번호 등의 자동 형식 감지 설정.
export const metadata = {
generator: 'Next.js',
applicationName: 'Next.js',
referrer: 'origin-when-cross-origin',
keywords: ['Next.js', 'React', 'JavaScript'],
authors: [{ name: 'Seb' }, { name: 'Josh', url: 'https://nextjs.org' }],
colorScheme: 'dark',
creator: 'Jiachi Liu',
publisher: 'Sebastian Markbåge',
alternates: {},
formatDetection: {
email: false,
address: false,
telephone: false,
},
};
Open Graph 메타데이터
Open Graph 메타데이터는 소셜 미디어 플랫폼 (예: Facebook, Twitter) 에서 링크가 공유될 때 보여지는 정보를 정의합니다
`title`: 페이지의 제목.
`description`: 페이지의 설명.
`url`: 페이지의 URL.
`siteName`: 사이트의 이름.
`images`: 페이지와 관련된 이미지 (소셜 미디어 미리보기 이미지 등).
`locale`: 페이지의 로케일 (언어 및 지역 설정).
`type`: 페이지의 유형 (예: `website`, `article`)
export const metadata = {
openGraph: {
title: 'Next.js',
description: 'The React Framework for the Web',
url: 'https://nextjs.org',
siteName: 'Next.js',
images: [
{
url: 'https://nextjs.org/og.png',
width: 800,
height: 600,
},
{
url: 'https://nextjs.org/og-alt.png',
width: 1800,
height: 1600,
alt: 'My custom alt',
},
],
locale: 'en-US',
type: 'website',
},
};
openGraph , 정적, HTMl 태그 메타데이터 같이 사용
// app/layout.tsx (Next.js 13+에서 사용하는 경우)
import { Metadata } from 'next';
export const metadata: Metadata = {
title: {
template: "%s | Next Movies",
default: "Loading..."
},
generator: 'Next.js',
applicationName: 'Next.js',
referrer: 'origin-when-cross-origin',
keywords: ['Next.js', 'React', 'JavaScript'],
authors: [{ name: 'Seb' }, { name: 'Josh', url: 'https://nextjs.org' }],
colorScheme: 'dark',
creator: 'Jiachi Liu',
publisher: 'Sebastian Markbåge',
alternates: {},
formatDetection: {
email: false,
address: false,
telephone: false,
},
openGraph: {
title: 'Next.js',
description: 'The React Framework for the Web',
url: 'https://nextjs.org',
siteName: 'Next.js',
images: [
{
url: 'https://nextjs.org/og.png',
width: 800,
height: 600,
},
{
url: 'https://nextjs.org/og-alt.png',
width: 1800,
height: 1600,
alt: 'My custom alt',
},
],
locale: 'en-US',
type: 'website',
},
};
// 페이지 컴포넌트
export default function Home() {
return (
<div>
{/* 페이지 내용 */}
</div>
);
}
'Next' 카테고리의 다른 글
[Next.js] 이미지 최적화 (4) | 2024.09.22 |
---|---|
[Next.js] 배포시 console 지우기 (1) | 2024.09.20 |
Next.js - 경로 (1) | 2024.05.21 |
Next.js (0) | 2024.05.21 |