MinJeung-Kim / NextJS-v13--Study

Next.js(v13)의 모든것😎
https://next-js-v13-study.vercel.app
0 stars 0 forks source link

SEO(검색 최적화) 설정 #13

Open MinJeung-Kim opened 1 year ago

MinJeung-Kim commented 1 year ago

🔎Optimizing Metadata

1. Static Metadata

export const metadata: Metadata = { title: '...', description: '...', };

export default function Page() {}


### 2. Dynamic Metadata 
- generateMetadata()함수 생성
- 사용자에게 페이지를 주기전에 generateMetadata()함수가 끝나고 메타데이터 정보가 완성된 후 사용자에게 페이지를 노출.

```ts
import { Metadata, ResolvingMetadata } from 'next';

type Props = {
  params: { id: string };
  searchParams: { [key: string]: string | string[] | undefined };
};

export async function generateMetadata(
  { params, searchParams }: Props,
  parent?: ResolvingMetadata,
): Promise<Metadata> {
  // read route params
  const id = params.id;

  // fetch data
  const product = await fetch(`https://.../${id}`).then((res) => res.json());

  // optionally access and extend (rather than replace) parent metadata
  const previousImages = (await parent).openGraph?.images || [];

  return {
    title: product.title,
    openGraph: {
      images: ['/some-specific-page-image.jpg', ...previousImages],
    },
  };
}

export default function Page({ params, searchParams }: Props) {}

3. JSON-LD

// Use TypeScript

import { Product, WithContext } from 'schema-dts';

const jsonLd: WithContext = { '@context': 'https://schema.org', '@type': 'Product', name: 'Next.js Sticker', image: 'https://nextjs.org/imgs/sticker.png', description: 'Dynamic at the speed of static.', };

MinJeung-Kim commented 1 year ago

🧍Static Metadata 적용

1. app/layout.tsx

image


2. app/products/layout.tsx

image

MinJeung-Kim commented 1 year ago

🏃Dynamic Metadata 적용

export function generateMetadata({ params }: Props) { return { title: 제품의 이름 : ${params.slug}, }; }

export default function PantsPage({ params }: Props) { return

{params.slug} 제품 설명 페이지

; }

export function generateStaticParams() { const products = ["pants", "skirt"]; return products.map((product) => ({ slug: product, })); }



![image](https://github.com/MinJeung-Kim/NextJS-Study/assets/79193369/93e3a710-9eef-4b37-9fe2-349f3bff06b3)