قائمة التحقق للإنتاج

قبل نشر تطبيق Next.js الخاص بك في بيئة الإنتاج، هناك بعض التحسينات والأنماط التي يجب مراعاتها لتحقيق أفضل تجربة مستخدم وأداء وأمان.

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

التحسينات التلقائية

هذه التحسينات في Next.js مفعلة افتراضيًا ولا تتطلب أي تكوين:

  • مكونات الخادم (Server Components): يستخدم Next.js مكونات الخادم افتراضيًا. تعمل مكونات الخادم على الخادم ولا تتطلب JavaScript للعرض على العميل. وبالتالي، ليس لها أي تأثير على حجم حزم JavaScript الخاصة بالعميل. يمكنك بعد ذلك استخدام مكونات العميل (Client Components) حسب الحاجة للتفاعلية.
  • تقسيم الكود (Code-splitting): تمكن مكونات الخادم من تقسيم الكود تلقائيًا حسب مقاطع المسار. يمكنك أيضًا التفكير في التحميل البطيء (lazy loading) لمكونات العميل ومكتبات الطرف الثالث، حيثما كان ذلك مناسبًا.
  • الجلب المسبق (Prefetching): عندما يدخل رابط لمسار جديد في نطاق رؤية المستخدم، يقوم Next.js بجلب المسار مسبقًا في الخلفية. هذا يجعل التنقل إلى المسارات الجديدة شبه فوري. يمكنك إلغاء تفعيل الجلب المسبق، حيثما كان ذلك مناسبًا.
  • العرض الثابت (Static Rendering): يقوم Next.js بعرض مكونات الخادم والعميل بشكل ثابت على الخادم أثناء البناء ويخزن النتيجة المعروضة لتحسين أداء تطبيقك. يمكنك اختيار العرض الديناميكي (Dynamic Rendering) لمسارات محددة، حيثما كان ذلك مناسبًا.
  • التخزين المؤقت (Caching): يقوم Next.js بتخزين طلبات البيانات، والنتيجة المعروضة لمكونات الخادم والعميل، والأصول الثابتة، والمزيد، لتقليل عدد طلبات الشبكة إلى خادمك وقاعدة البيانات وخدمات الخلفية. يمكنك إلغاء تفعيل التخزين المؤقت، حيثما كان ذلك مناسبًا.

تهدف هذه الإعدادات الافتراضية إلى تحسين أداء تطبيقك، وتقليل التكلفة وكمية البيانات المنقولة في كل طلب شبكة.

أثناء التطوير

أثناء بناء تطبيقك، نوصي باستخدام الميزات التالية لضمان أفضل أداء وتجربة مستخدم:

التوجيه والعرض

معلومة مفيدة: التقديم المسبق الجزئي (Partial Prerendering) (تجريبي) سيسمح لأجزاء من المسار أن تكون ديناميكية دون جعل المسار بأكمله يعمل في وضع العرض الديناميكي.

جلب البيانات والتخزين المؤقت

واجهة المستخدم وإمكانية الوصول

  • وحدة الخطوط (Font Module): حسّن الخطوط باستخدام وحدة الخطوط، التي تستضيف ملفات الخطوط تلقائيًا مع الأصول الثابتة الأخرى، وتزيل طلبات الشبكة الخارجية، وتقلل من انزياح التخطيط (layout shift).
  • مكون <Image>: حسّن الصور باستخدام مكون الصورة، الذي يحسن الصور تلقائيًا، ويمنع انزياح التخطيط، ويقدمها بتنسيقات حديثة مثل WebP أو AVIF.
  • مكون <Script>: حسّن نصوص الطرف الثالث باستخدام مكون النص، الذي يؤجل النصوص تلقائيًا ويمنعها من حظر الخيط الرئيسي.
  • ESLint: استخدم المكون الإضافي المدمج eslint-plugin-jsx-a11y لاكتشاف مشكلات إمكانية الوصول مبكرًا.

الأمان

  • متغيرات البيئة (Environment Variables): تأكد من إضافة ملفات .env.* إلى .gitignore وأن المتغيرات العامة فقط مسبوقة بـ NEXT_PUBLIC_.
  • سياسة أمان المحتوى (Content Security Policy): فكر في إضافة سياسة أمان المحتوى لحماية تطبيقك من التهديدات الأمنية المختلفة مثل حقن النصوص عبر المواقع (cross-site scripting)، والتصيد بالنقر (clickjacking)، وهجمات حقن التعليمات البرمجية الأخرى.

البيانات الوصفية وتحسين محركات البحث (SEO)

سلامة الأنواع

  • TypeScript والمكون الإضافي لـ TS: استخدم TypeScript والمكون الإضافي لـ TypeScript لتحسين سلامة الأنواع، ولمساعدتك في اكتشاف الأخطاء مبكرًا.

قبل الانتقال للإنتاج

قبل الانتقال للإنتاج، يمكنك تشغيل next build لبناء تطبيقك محليًا واكتشاف أي أخطاء في البناء، ثم تشغيل next start لقياس أداء تطبيقك في بيئة تشبه بيئة الإنتاج.

مؤشرات الويب الأساسية (Core Web Vitals)

  • Lighthouse: شغّل Lighthouse في وضع التصفح المتخفي لفهم أفضل لكيفية تجربة المستخدمين لموقعك، ولتحديد مجالات التحسين. هذا اختبار محاكاة ويجب أن يقترن بفحص بيانات الميدان (مثل مؤشرات الويب الأساسية).

تحليل الحزم

استخدم المكون الإضافي @next/bundle-analyzer لتحليل حجم حزم JavaScript الخاصة بك وتحديد الوحدات الكبيرة والتبعيات التي قد تؤثر على أداء تطبيقك.

بالإضافة إلى ذلك، يمكن للأدوات التالية مساعدتك في فهم تأثير إضافة تبعيات جديدة إلى تطبيقك:

بعد النشر

اعتمادًا على مكان نشر تطبيقك، قد يكون لديك إمكانية الوصول إلى أدوات وتكاملات إضافية لمساعدتك في مراقبة وتحسين أداء تطبيقك.

لنشرات Vercel، نوصي بما يلي:

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

معلومة مفيدة:

للحصول على فهم شامل لأفضل الممارسات لنشرات الإنتاج على Vercel، بما في ذلك الاستراتيجيات التفصيلية لتحسين أداء الموقع، راجع قائمة التحقق للإنتاج لـ Vercel.

اتباع هذه التوصيات سيساعدك في بناء تطبيق أسرع وأكثر موثوقية وأمانًا لمستخدميك.