التوليد الثابت مع البيانات وبدونها

يمكن تنفيذ التوليد الثابت (Static Generation) مع البيانات أو بدونها.

حتى الآن، جميع الصفحات التي أنشأناها لا تتطلب جلب بيانات خارجية. سيتم توليد هذه الصفحات تلقائيًا بشكل ثابت عند بناء التطبيق للإنتاج.

التوليد الثابت بدون بيانات

ومع ذلك، بالنسبة لبعض الصفحات، قد لا تتمكن من عرض HTML دون جلب بعض البيانات الخارجية أولاً. ربما تحتاج إلى الوصول إلى نظام الملفات، أو جلب بيانات من واجهة برمجة تطبيقات خارجية، أو استعلام قاعدة البيانات أثناء وقت البناء. يدعم Next.js هذه الحالة - التوليد الثابت مع البيانات - بشكل جاهز.

التوليد الثابت مع البيانات

التوليد الثابت مع البيانات باستخدام getStaticProps

كيف يعمل هذا؟ في Next.js، عند تصدير مكون صفحة، يمكنك أيضًا تصدير دالة async تسمى getStaticProps. إذا قمت بذلك، فإن:

  • getStaticProps تعمل أثناء وقت البناء في بيئة الإنتاج، و...
  • داخل الدالة، يمكنك جلب بيانات خارجية وإرسالها كخصائص (props) إلى الصفحة.
export default function Home(props) { ... }
 
export async function getStaticProps() {
  // جلب البيانات الخارجية من نظام الملفات، واجهة برمجة التطبيقات، قاعدة البيانات، إلخ.
  const data = ...
 
  // سيتم تمرير قيمة مفتاح `props`
  // إلى مكون `Home`
  return {
    props: ...
  }
}

في الأساس، تسمح لك getStaticProps بإخبار Next.js: "مرحبًا، هذه الصفحة لديها بعض التبعيات للبيانات - لذا عند التصيير المسبق لهذه الصفحة أثناء البناء، تأكد من حلها أولاً!"

ملاحظة: في وضع التطوير، تعمل getStaticProps عند كل طلب بدلاً من ذلك.

لنستخدم getStaticProps

من الأسهل التعلم بالممارسة، لذا بدءًا من الصفحة التالية، سنستخدم getStaticProps لتنفيذ مدونتنا.