أساسيات التوجيه (Routing)

الهيكل الأساسي لكل تطبيق هو نظام التوجيه. ستقدم لك هذه الصفحة المفاهيم الأساسية لتوجيه الطلبات على الويب وكيفية التعامل مع التوجيه في Next.js.

المصطلحات

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

مصطلحات شجرة المكونات
  • الشجرة (Tree): اصطلاح لتصور هيكل هرمي. على سبيل المثال، شجرة مكونات تحتوي على مكونات أب وطفل، هيكل مجلدات، إلخ.
  • الشجرة الفرعية (Subtree): جزء من شجرة، يبدأ من جذر جديد (أول) وينتهي عند الأوراق (آخر).
  • الجذر (Root): العقدة الأولى في شجرة أو شجرة فرعية، مثل تخطيط الجذر.
  • الورقة (Leaf): عقد في شجرة فرعية ليس لها أطفال، مثل الجزء الأخير في مسار URL.
مصطلحات تشريح URL
  • جزء URL (URL Segment): جزء من مسار URL محدد بشرطات مائلة.
  • مسار URL (URL Path): جزء من URL يأتي بعد النطاق (مكون من أجزاء).

موجه app

في الإصدار 13، قدمت Next.js موجه تطبيق (App Router) جديد مبني على مكونات الخادم في React، والذي يدعم التخطيطات المشتركة، التوجيه المتداخل، حالات التحميل، معالجة الأخطاء، والمزيد.

يعمل موجه التطبيق في مجلد جديد باسم app. يعمل مجلد app جنبًا إلى جنب مع مجلد pages للسماح بالتبني التدريجي. هذا يسمح لك باختيار بعض مسارات تطبيقك للسلوك الجديد مع الاحتفاظ بمسارات أخرى في مجلد pages للسلوك السابق. إذا كان تطبيقك يستخدم مجلد pages، يرجى أيضًا الاطلاع على وثائق موجه الصفحات (Pages Router).

جيد للمعرفة: موجه التطبيق له أولوية أعلى من موجه الصفحات. لا ينبغي أن تحل المسارات عبر المجلدات إلى نفس مسار URL وسيؤدي ذلك إلى خطأ في وقت البناء لمنع التعارض.

مجلد تطبيق Next.js

بشكل افتراضي، المكونات داخل app هي مكونات خادم React. هذا تحسين للأداء ويسمح لك بتبنيها بسهولة، ويمكنك أيضًا استخدام مكونات العميل.

التوصية: تحقق من صفحة الخادم إذا كنت جديدًا على مكونات الخادم.

أدوار المجلدات والملفات

يستخدم Next.js موجهًا يعتمد على نظام الملفات حيث:

  • المجلدات تُستخدم لتعريف المسارات. المسار هو مسار واحد من المجلدات المتداخلة، يتبع التسلسل الهرمي لنظام الملفات من مجلد الجذر وصولاً إلى مجلد الورقة النهائي الذي يتضمن ملف page.js. انظر تحديد المسارات.
  • الملفات تُستخدم لإنشاء واجهة مستخدم تُعرض لقطاع مسار. انظر الملفات الخاصة.

أجزاء المسار

كل مجلد في مسار يمثل قطاع مسار (route segment). كل قطاع مسار يتم تعيينه إلى قطاع مقابِل في مسار URL.

كيفية تعيين أجزاء المسار إلى أجزاء URL

المسارات المتداخلة

لإنشاء مسار متداخل، يمكنك تداخل المجلدات داخل بعضها البعض. على سبيل المثال، يمكنك إضافة مسار جديد /dashboard/settings عن طريق تداخل مجلدين جديدين في مجلد app.

يتكون مسار /dashboard/settings من ثلاثة أجزاء:

  • / (قطاع الجذر)
  • dashboard (قطاع)
  • settings (قطاع الورقة)

اصطلاحات الملفات

يوفر Next.js مجموعة من الملفات الخاصة لإنشاء واجهة مستخدم بسلوك محدد في المسارات المتداخلة:

layoutواجهة مستخدم مشتركة لقطاع وأطفاله
pageواجهة مستخدم فريدة لمسار وجعل المسارات قابلة للوصول العام
loadingواجهة مستخدم التحميل لقطاع وأطفاله
not-foundواجهة مستخدم غير موجود لقطاع وأطفاله
errorواجهة مستخدم الخطأ لقطاع وأطفاله
global-errorواجهة مستخدم الخطأ العام
routeنقطة نهاية API من جانب الخادم
templateواجهة مستخدم تخطيط معاد عرضها بشكل متخصص
defaultواجهة مستخدم احتياطية لـ المسارات المتوازية

جيد للمعرفة: يمكن استخدام امتدادات الملفات .js أو .jsx أو .tsx للملفات الخاصة.

تسلسل المكونات الهرمي

يتم عرض مكونات React المعرفة في الملفات الخاصة لقطاع مسار في تسلسل هرمي محدد:

  • layout.js
  • template.js
  • error.js (حدود خطأ React)
  • loading.js (حدود تعليق React)
  • not-found.js (حدود خطأ React)
  • page.js أو layout.js متداخل
التسلسل الهرمي للمكونات لاصطلاحات الملفات

في مسار متداخل، سيتم تداخل مكونات القطاع داخل مكونات قطاعها الأب.

التسلسل الهرمي للمكونات لاصطلاحات الملفات المتداخلة

التواجد المشترك

بالإضافة إلى الملفات الخاصة، لديك خيار وضع ملفاتك الخاصة (مثل المكونات، الأنماط، الاختبارات، إلخ) داخل مجلدات في مجلد app.

هذا لأنه بينما تحدد المجلدات المسارات، فقط المحتويات التي تُرجعها page.js أو route.js قابلة للعنونة العامة.

مثال على هيكل مجلد مع ملفات متواجدة مشتركة

تعلم المزيد حول تنظيم المشروع والتواجد المشترك.

أنماط التوجيه المتقدمة

يوفر موجه التطبيق أيضًا مجموعة من الاصطلاحات لمساعدتك في تنفيذ أنماط توجيه أكثر تقدمًا. وتشمل:

  • المسارات المتوازية: تسمح لك بعرض صفحتين أو أكثر في نفس العرض يمكن التنقل بينهما بشكل مستقل. يمكنك استخدامها لعروض مقسمة لها تنقل فرعي خاص بها. مثل لوحات التحكم.
  • مسارات الاعتراض: تسمح لك باعتراض مسار وعرضه في سياق مسار آخر. يمكنك استخدام هذه عندما يكون الحفاظ على سياق الصفحة الحالية مهمًا. مثل رؤية جميع المهام أثناء تحرير مهمة واحدة أو توسيع صورة في موجز.

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

الخطوات التالية

الآن بعد أن فهمت أساسيات التوجيه في Next.js، اتبع الروابط أدناه لإنشاء مساراتك الأولى:

تعريف المسارات (Routes)

تعلم كيفية إنشاء أول مسار (route) في Next.js.

الصفحات والتخطيطات

إنشاء أول صفحة لك وتخطيط مشترك باستخدام موجه التطبيق (App Router).

الربط والتنقل

تعرف على كيفية عمل التنقل في Next.js، وكيفية استخدام مكون Link وخطاف `useRouter`.

واجهة التحميل والبث (Streaming)

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

معالجة الأخطاء

التعامل مع أخطاء وقت التشغيل عن طريق تغليف مقاطع المسارات وأطفالها المتداخلين تلقائيًا في حدود خطأ React.

إعادة التوجيه

تعرف على الطرق المختلفة للتعامل مع عمليات إعادة التوجيه في Next.js.

مجموعات المسارات (Route Groups)

يمكن استخدام مجموعات المسارات لتقسيم تطبيق Next.js الخاص بك إلى أقسام مختلفة.

تنظيم المشروع

تعلم كيفية تنظيم مشروع Next.js ووضع الملفات معًا.

المسارات الديناميكية

يمكن استخدام المسارات الديناميكية لإنشاء مقاطع المسارات برمجيًا من البيانات الديناميكية.

المسارات المتوازية (Parallel Routes)

عرض صفحة أو أكثر في نفس الواجهة بشكل متزامن مع إمكانية التنقل بينها بشكل مستقل. نمط لتطبيقات الويب الديناميكية للغاية.

مسارات الاعتراض (Intercepting Routes)

استخدم مسارات الاعتراض لتحميل مسار جديد داخل التخطيط الحالي مع إخفاء عنوان URL للمتصفح، مفيد لأنماط التوجيه المتقدمة مثل النوافذ المنبثقة.

معالجات المسارات (Route Handlers)

إنشاء معالجات طلبات مخصصة لمسار معين باستخدام واجهات Request و Response من الويب.

Middleware

تعلم كيفية استخدام Middleware لتشغيل كود قبل اكتمال الطلب.

التدويل (Internationalization)

إضافة دعم للغات متعددة مع توجيه دولي ومحتوى مترجم.