استفاده از API در Next.js با استفاده از متادیتا و گزینه‌های generateMetadata

next js generate metadata
23 آذر 1403

فهم متادیتا و گزینه‌های generateMetadata در Next.js


اگر شما با Next.js کار کرده باشید، حتماً متوجه شده‌اید که این فریم‌ورک به شما اجازه می‌دهد تا به راحتی متادیتا (metadata) را برای برنامه‌های خود تنظیم کنید. متادیتا اطلاعاتی است که می‌تواند شامل عنوان صفحه، توضیحات، کلمات کلیدی و موارد دیگر باشد. این اطلاعات در SEO (بهینه‌سازی موتور جستجو) بسیار اهمیت دارد و می‌تواند تأثیر زیادی بر روی دیده شدن صفحات وب شما داشته باشد.


در نسخه‌های جدید Next.js، ما یک ویژگی به نام generateMetadata داریم که به ما امکان می‌دهد تا به صورت پویا متادیتا را برای هر صفحه ایجاد کنیم. این گزینه به خصوص زمانی مفید است که شما به وب‌سایت‌هایی با محتوای متغیر و غیر ثابت کار می‌کنید. با استفاده از این گزینه، می‌توانید مشخص کنید که متادیتا بر اساس داده‌های خاص هر درخواست باید چه باشد.


حالا بیایید نگاهی به نحوه استفاده از generateMetadata بیندازیم. مثلاً فرض کنید شما یک وب‌سایت خبری دارید و هر خبر شامل عنوان و توضیحات خاص خود است. شما می‌توانید با استفاده از generateMetadata این ویژگی را به صفحه‌تان اضافه کنید تا به صورت خودکار متادیتا را برای هر خبر تنظیم کند.


در ادامه، ما مثالی ساده از چگونگی استفاده از generateMetadata را بررسی خواهیم کرد. من قصد دارم یک ساختار پایه‌ای برای این کار ارائه کنم. در اینجا یک کد نمونه از ساختار فایل‌های Next.js را می‌بینید:


export async function generateMetadata({ params }) {
const { id } = params;
const newsItem = await getNewsById(id);
return {
title: newsItem.title,
description: newsItem.description,
};
}

توضیحات کد


در این کد، ما ابتدا تابع generateMetadata را تعریف می‌کنیم که یک پارامتر به نام params دریافت می‌کند. این پارامتر معمولا شامل اطلاعاتی است که به ما اجازه می‌دهد تا اطلاعات خاص هر صفحه را به‌دست آوریم.




سپس با استفاده از const { id } = params;، شناسه خبر را از پارامترهای ورودی بیرون می‌کشیم. این شناسه برای بارگذاری اطلاعات خبر مورد استفاده قرار می‌گیرد.




حال، با استفاده از تابعی به نام getNewsById(id)، ما اطلاعات خبر را بر اساس شناسه آن بارگذاری می‌کنیم. این تابع می‌تواند مثلاً از یک API یا یک پایگاه داده اطلاعات خبر را دریافت کند.




در نهایت، ما یک شیء را برمی‌گردانیم که شامل دو خاصیت است: title و description. این‌ها متادیتای مربوط به خبر ما هستند که به طور خودکار تنظیم می‌شوند. این متادیتا در <head> صفحه شما به کار خواهد رفت.


سوالات متداول

؟

چرا متادیتا مهم است؟

؟

چگونه می‌توانم متادیتا را در Next.js تنظیم کنم؟

؟

آیا می‌توانم متادیتا را به صورت پویا بر اساس اطلاعات API تنظیم کنم؟

؟

آیا متادیتا فقط شامل عنوان و توضیحات است؟