تصدير التطبيق إلى صفحات HTML ساكنة في Next.js
يتيح لك الأمر next export تصدير تطبيق Next.js إلى صفحات HTML ساكنة قائمة بحد ذاتها دون الحاجة إلى خادم Node.js. ننصحك فقط باستخدام next export إن لم تكن بحاجة إلى أية ميزات غير مدعومة تحتاج إلى خادم.
إن كنت تنوي إنشاء تطبيق هجين تُصيّر فيه بعض الصفحات مسبقًا فقط إلى صفحات HTML ساكنة، فهذا ما تفعله Next.js تلقائيًا. لمزيد من المعلومات اطلع أكثر على التحسين الساكن التلقائي والتجديد التدريجي الساكن.
استخدام الأمر next export
حدِّث سكربت بناء التطبيق في الملف package.json لاستخدام next export:
"scripts": {
"build": "next build && next export"
}
نفّذ بعد ذلك الأمر npm run build الذي يولّد المجلد out.
يبني الأمر next export نسخة من التطبيق. إذ ستوّلد الدالتين getStaticProps و getStaticPaths أثناء بناء التطبيق next build ملف HTML لكل صفحة موجودة في المجلد pages (أو لكل وجهة ديناميكية). ثم ينسخ next export بعد ذلك الملفات التي صُدِّرت إلى المجلد الصحيح. وستوّلد الدالة getInitialProps ملفات HTML خلال تنفيذ الأمر next export بدلًا من توليدها عند تنفيذ الأمر next build.
يمكنك تعريف المعامل exportPathMap في حالات متقدمة أكثر ضمن الملف next.config.js لتحديد الصفحات التي ستُولَّد.
تحذير: تجنب استعمال exportPathMap لتعريف وجهات routes مع أي مسارات getStaticPaths لصفحات مولدة، فلا ننصح أبدًا بفعل ذلك بعد الآن.
الميزات المدعومة
تُدعم الغالبية العظمى من ميزات Next.js الضرورية لبناء موقع ساكن بما في ذلك:
- الوجهات الديناميكية عند استخدام الدالة
getStaticPaths. - الإحضار المسبق باستخدام المكوّن
next/link. - التحميل المسبق لشيفرة JavaScript.
- الإدراج الديناميكي.
- أي خيارات لتنسيق الصفحة.
- إحضار البيانات من جانب العميل.
- استخدام الدالتين
getStaticPropsوgetStaticPaths. - تحسين الصورة باستخدام المُحمِّلات المخصصة.
الميزات غير المدعومة
وهي الميزات التي تحتاج خادم Next.js أو منطق ديناميكي لا يمكن حسابه أثناء عملية البناء:
- تحسين الصورة (المحمِّل الافتراضي)
- الوجهات العالمية
- مسارات API
- Rewrites
- Redirects
- Headers
- البرمجيات الوسطية Middleware
- التجديد التدريجي الساكن
fallback: truegetServerSideProps
الدالة getInitialProps
يمكنك استخدام الواجهة البرمجية للدالة getInitialProps بدلًا من استخدامها نفسها، لكن مع بعض التحذيرات:
- لا يمكن استخدام
getInitialPropsمعgetStaticPropsأوgetStaticPathsفي أي صفحة. فإن كان لديك وجهات ديناميكية، هيئ المعاملexportPathMapفي ملفnext.config.jsبدلًا من استخدامgetStaticPaths، لتخبر المُصدِّر أية ملفات يجب توليدها.
- عندما تُستدعى الدالة
getInitialPropsأثناء التصدير سيكون الكائنانreqوresالعائدين للمعاملcontextفارغان لعدم وجود خادم أثناء التصدير. - تُستدعى الدالة
getInitialPropsعند أية تنقلات في جانب العميل، لهذا عليك التبديل إلىgetStaticPropsإن أردت إحضار البيانات أثناء بناء التطبيق. - تحضر الدالة
getInitialPropsالبيانات من الواجهة البرمجية ولا يمكنها استخدام مكتبات خاصة أو منظومة الملفات كما تفعلgetStaticProps.
لهذا ننصحك باستخدام getStaticProps بدلًا من getInitialProps ما أمكن.
أمثلة
المصادر
- الصفحة Static HTML Export من توثيق Next.js الرسمي.