الفرق بين المراجعتين لصفحة: «Next.js/static html export»
لا ملخص تعديل |
لا ملخص تعديل |
||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE:تصدير التطبيق إلى صفحات HTML ساكنة في Next.js}}</noinclude> | <noinclude>{{DISPLAYTITLE:تصدير التطبيق إلى صفحات HTML ساكنة في Next.js}}</noinclude> | ||
يتيح لك الأمر <code>next export</code> تصدير تطبيق Next.js إلى صفحات HTML ساكنة قائمة بحد ذاتها دون الحاجة إلى خادم Node.js. ننصحك فقط باستخدام <code>next export</code> إن لم تكن بحاجة إلى أية ميزات غير مدعومة | يتيح لك الأمر <code>next export</code> تصدير تطبيق Next.js إلى صفحات HTML ساكنة قائمة بحد ذاتها دون الحاجة إلى خادم Node.js. ننصحك فقط باستخدام <code>next export</code> إن لم تكن بحاجة إلى أية ميزات غير مدعومة تحتاج إلى خادم. | ||
إن كنت تنوي إنشاء تطبيق هجين تُصيّر فيه بعض الصفحات مسبقًا فقط إلى صفحات HTML ساكنة، فهذا ما تفعله Next.js تلقائيًا. لمزيد من المعلومات اطلع أكثر على [[Next.js/automatic static optimization|التحسين الساكن التلقائي]] و [[Next.js/data fetching#.D8.A7.D9.84.D8.AA.D8.AC.D8.AF.D9.8A.D8.AF%20.D8.A7.D9.84.D8.AA.D8.AF.D8.B1.D9.8A.D8.AC.D9.8A%20.D8.A7.D9.84.D8.B3.D8.A7.D9.83.D9.86%20.D9.81.D9.8A%20Next.js|التجديد التدريجي الساكن]]. | إن كنت تنوي إنشاء تطبيق هجين تُصيّر فيه بعض الصفحات مسبقًا فقط إلى صفحات HTML ساكنة، فهذا ما تفعله Next.js تلقائيًا. لمزيد من المعلومات اطلع أكثر على [[Next.js/automatic static optimization|التحسين الساكن التلقائي]] و<nowiki/>[[Next.js/data fetching#.D8.A7.D9.84.D8.AA.D8.AC.D8.AF.D9.8A.D8.AF%20.D8.A7.D9.84.D8.AA.D8.AF.D8.B1.D9.8A.D8.AC.D9.8A%20.D8.A7.D9.84.D8.B3.D8.A7.D9.83.D9.86%20.D9.81.D9.8A%20Next.js|التجديد التدريجي الساكن]]. | ||
== استخدام الأمر <code>next export</code> == | == استخدام الأمر <code>next export</code> == | ||
سطر 11: | سطر 11: | ||
</syntaxhighlight>نفّذ بعد ذلك الأمر <code>npm run build</code> الذي يولّد المجلد <code>out</code>. | </syntaxhighlight>نفّذ بعد ذلك الأمر <code>npm run build</code> الذي يولّد المجلد <code>out</code>. | ||
يبني الأمر <code>next export</code> نسخة من التطبيق . إذ ستوّلد الدالتين <code>getStaticProps</code> و <code>getStaticPaths</code> أثناء بناء التطبيق <code>next build</code> ملف HTML لكل صفحة موجودة في المجلد <code>pages</code> (أو لكل وجهة ديناميكية). ثم ينسخ <code>next export</code> بعد ذلك الملفات التي صُدِّرت إلى المجلد الصحيح. وستوّلد الدالة <code>getInitialProps</code> ملفات HTML خلال تنفيذ الأمر <code>next export</code> بدلًا من توليدها عند تنفيذ الأمر <code>next build</code>. | يبني الأمر <code>next export</code> نسخة من التطبيق. إذ ستوّلد الدالتين <code>getStaticProps</code> و <code>getStaticPaths</code> أثناء بناء التطبيق <code>next build</code> ملف HTML لكل صفحة موجودة في المجلد <code>pages</code> (أو لكل وجهة ديناميكية). ثم ينسخ <code>next export</code> بعد ذلك الملفات التي صُدِّرت إلى المجلد الصحيح. وستوّلد الدالة <code>getInitialProps</code> ملفات HTML خلال تنفيذ الأمر <code>next export</code> بدلًا من توليدها عند تنفيذ الأمر <code>next build</code>. | ||
يمكنك تعريف المعامل [[Next.js/next.config.js|<code>exportPathMap</code>]] في حالات متقدمة أكثر ضمن الملف <code>next.config.js</code> لتحديد | يمكنك تعريف المعامل [[Next.js/next.config.js|<code>exportPathMap</code>]] في حالات متقدمة أكثر ضمن الملف <code>next.config.js</code> لتحديد الصفحات التي ستُولَّد. | ||
== الميزات المدعومة == | == الميزات المدعومة == | ||
تُدعم الغالبية العظمى من ميزات | تُدعم الغالبية العظمى من ميزات Next.js الضرورية لبناء موقع ساكن بما في ذلك: | ||
* | * الوجهات الديناميكية عند استخدام الدالة <code>getStaticPaths</code>. | ||
* الإحضار المسبق باستخدام المكوّن <code>next/link</code>. | * الإحضار المسبق باستخدام المكوّن <code>next/link</code>. | ||
* التحميل المسبق لشيفرة JavaScript. | * التحميل المسبق لشيفرة JavaScript. | ||
سطر 28: | سطر 28: | ||
== الميزات غير المدعومة == | == الميزات غير المدعومة == | ||
وهي الميزات التي تحتاج خادم | وهي الميزات التي تحتاج خادم Next.js أو منطق ديناميكي لا يمكن حسابه أثناء عملية البناء: | ||
* تحسين الصورة (المحمِّل الافتراضي) | * تحسين الصورة (المحمِّل الافتراضي) | ||
سطر 48: | سطر 48: | ||
* عندما تُستدعى الدالة <code>getInitialProps</code> أثناء التصدير سيكون الكائنان <code>req</code> و <code>res</code> العائدين للمعامل <code>context</code> فارغان لعدم وجود خادم أثناء التصدير. | * عندما تُستدعى الدالة <code>getInitialProps</code> أثناء التصدير سيكون الكائنان <code>req</code> و <code>res</code> العائدين للمعامل <code>context</code> فارغان لعدم وجود خادم أثناء التصدير. | ||
* تُستدعى الدالة <code>getInitialProps</code> عند أية تنقلات في جانب العميل، لهذا عليك التبديل إلى | * تُستدعى الدالة <code>getInitialProps</code> عند أية تنقلات في جانب العميل، لهذا عليك التبديل إلى <code>getStaticProps</code> إن أردت إحضار البيانات أثناء بناء التطبيق. | ||
* تحضر الدالة <code>getInitialProps</code> البيانات من الواجهة البرمجية ولا يمكنها استخدام مكتبات | * تحضر الدالة <code>getInitialProps</code> البيانات من الواجهة البرمجية ولا يمكنها استخدام مكتبات خاصة أو منظومة الملفات كما تفعل <code>getStaticProps</code>. | ||
لهذا ننصحك باستخدام <code>getStaticProps</code> بدلًا من <code>getInitialProps</code> ما أمكن. | لهذا ننصحك باستخدام <code>getStaticProps</code> بدلًا من <code>getInitialProps</code> ما أمكن. | ||
سطر 55: | سطر 55: | ||
== المصادر == | == المصادر == | ||
* الصفحة | * الصفحة [https://nextjs.org/docs/advanced-features/static-html-export Static HTML Export] من توثيق Next.js الرسمي. |
مراجعة 06:07، 4 يونيو 2022
يتيح لك الأمر 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
لتحديد الصفحات التي ستُولَّد.
الميزات المدعومة
تُدعم الغالبية العظمى من ميزات Next.js الضرورية لبناء موقع ساكن بما في ذلك:
- الوجهات الديناميكية عند استخدام الدالة
getStaticPaths
. - الإحضار المسبق باستخدام المكوّن
next/link
. - التحميل المسبق لشيفرة JavaScript.
- الإدراج الديناميكي.
- أي خيارات لتنسيق الصفحة.
- إحضار البيانات من جانب العميل.
- استخدام الدالتين
getStaticProps
وgetStaticPaths
. - تحسين الصورة باستخدام المُحمِّلات المخصصة.
الميزات غير المدعومة
وهي الميزات التي تحتاج خادم Next.js أو منطق ديناميكي لا يمكن حسابه أثناء عملية البناء:
- تحسين الصورة (المحمِّل الافتراضي)
- الوجهات العالمية
- مسارات API
- Rewrites
- Redirects
- Headers
- الأدوات الوسطية
- التجديد التدريجي الساكن
fallback: true
getServerSideProps
الدالة 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 الرسمي.