đ Utilisation des metadata
dans Next.js 13+
Next.js 13+ introduit une API native pour gérer les métadonnées (title
, description
, og:image
, etc.) directement dans les pages et layouts. Cela amĂ©liore le SEO et lâaccessibilitĂ© sans nĂ©cessiter de bibliothĂšques comme next/head
.
1ïžâŁ Ajouter des mĂ©tadonnĂ©es dans layout.tsx
đ But : DĂ©finir des mĂ©tadonnĂ©es globales pour lâensemble du site.
app/layout.tsx
export const metadata = {
title: "Mon Site Next.js",
description: "Un site web performant avec Next.js 13+",
keywords: ["Next.js", "SEO", "Performance"],
openGraph: {
title: "Mon Site Next.js",
description: "Découvrez Next.js et ses fonctionnalités avancées",
url: "https://monsite.com",
siteName: "Mon Site",
images: [
{
url: "/og-image.jpg",
// Image affichée sur les réseaux sociaux
// Ă placer dans le dossier "/public"
width: 1200,
height: 630,
alt: "BanniĂšre de Mon Site Next.js",
},
],
locale: "fr_FR",
type: "website",
alternates: {
canonical: './',
// Défini l'url de la page en cours préférable à "/"
},
},
};
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="fr">
<body>
{children}
</body>
</html>
);
}
â Effet :
- Toutes les pages héritent des métadonnées définies ici.
- SEO amélioré avec des balises optimisées (
title
,description
,og:image
, etc.).
2ïžâŁ Ajouter des mĂ©tadonnĂ©es spĂ©cifiques Ă une page (page.tsx
)
đ But : Personnaliser les mĂ©tadonnĂ©es par page.
app/about/page.tsx
export const metadata = {
title: "Ă propos - Mon Site",
description: "DĂ©couvrez qui nous sommes et notre mission.",
};
export default function AboutPage() {
return (
<div>
<h2 className="text-2xl font-bold">Ă propos de nous</h2>
<p>Nous sommes passionnés par Next.js et le développement web.</p>
</div>
);
}
â Effet :
- La page
/about
aura un titre unique"Ă propos - Mon Site"
. - Priorité aux métadonnées locales si elles existent, sinon celles du
layout.tsx
sâappliquent.
3ïžâŁ GĂ©nĂ©rer dynamiquement des mĂ©tadonnĂ©es (generateMetadata
)
đ But : GĂ©nĂ©rer des mĂ©tadonnĂ©es en fonction dâun contenu dynamique (ex : article de blog).
app/blog/[slug]/page.tsx
import { Metadata } from "next";
type Props = {
params: { slug: string };
};
export async function generateMetadata({ params }: Props): Promise<Metadata> {
const article = await fetch(`https://api.monsite.com/articles/${params.slug}`).then((res) =>
res.json()
);
return {
title: article.title,
description: article.excerpt,
openGraph: {
title: article.title,
description: article.excerpt,
images: [{ url: article.image }],
},
};
}
export default function BlogPost({ params }: Props) {
return (
<div>
<h1>Article : {params.slug}</h1>
<p>Contenu de lâarticle...</p>
</div>
);
}
â Effet :
- SEO dynamique : Chaque article a ses propres métadonnées.
- Optimisation pour le partage sur les réseaux sociaux (
og:title
,og:image
).
đŻ Conclusion : Pourquoi utiliser les metadata
de Next.js ?
â
FacilitĂ© â Plus besoin de next/head
, tout est intégré dans metadata
.
â
Performance â MĂ©tadonnĂ©es gĂ©rĂ©es directement au niveau du serveur.
â
SEO optimal â Personnalisation des balises title
, description
, og:image
.
mis Ă jour le