«•}I|[ الدورة التعليمية للمنتدى NextJs & Tailwind ]|I{•» [ Next JS Routing] موضوع جد مهم
آخر
الصفحة
طالب عفو الرحمن
- عضوية مقفولة -
طالب عفو الرحمن
- عضوية مقفولة -
  • 18:23 - 2024/03/13

بسم الله الرحمن الرحيم والصلاة على من بعت رحمة للعالمين
سيد الأولين والأخرين سيدنا محمد صلى الله عليه وأله وسلم

أما بعد ...
إخواني أحبائي وأصدقائي أهلا بكم...

ندخل صلب الموضوع
سلام حار لكل متصفح للموضوع وكل عضو بالمنتدى

 

 

Routing in NextJs

-------------------------------------

وهي من أهم مميزات NextJs لأنها تأتي متوفرة مع النسخة التي يتم تحميلها و لا يوجد أي تعديلات أو إضافات يمكننا أن نزيدها 

عندما نتحدث عن ال Routing في ReactJs فهي تشبه ألم المفاصل تعرف أي المشكل لكن لا تعرف كيف تتعامل معه

لنلقي نضرة عما يمكن أن يصير ملف ال Routing داخل ReactJs ثم سنعمل مقارنة بسيطة بين الإثنين

 

 2024-03-12-14-20-23


فبعد تحميل react-router-dom عن طريق npm 

نقوم بتهيئة ملف App ووضع فيه وصلاتنا الخاصة

في المثال السابق لا ننسى أنه مجرد مثال بسيط ، مع توسعة المشروع سيصير الأمر معقدا و صعب التعامل معه.

 

والآن سنرى كيف يمكننا التعامل مع نفس الحالة لكن عن طريق إستخدام NextJs Routing system

والذي يعتمد بالأساس على تسمية المجلدات داخل المشروع 

فكل مجلد يمثل مسارا معيننا بينما الملفات التي فيه تمثل الواجهة

ولكي نستطيع عمل نفس المسارات في الملف السابق يجب علينا إنشاء مجلدين تحت إسم about و register

2024-03-12-14-33-03

 

وثم ننشأ ملفا خاصا يجب تسميته في كل مجلد ب page.tsx أو page.js

 

2024-03-12-14-36-31

 

سنفهم أكثر كيفية عمل Routing in NextJs ونحن نبرمج 

يمكننا التعديل على ملف page.tsx الرئيسي في مجلد App 


2024-03-12-14-36-36

 

 نقوم بتفريغ الملف وترك فقط الأشياء الضرورية

 

2024-03-12-15-42-49 


2024-03-12-14-56-55

 

سنقوم بإنشاء مجلد خاص ب Components نضع فيه ملف جديد بإسم Navbar.jsx

 

2024-03-12-14-59-25

 

سنعمل قائمة بسيطة فقط للشرح يعني قليلة الاستايلات 


2024-03-12-15-03-47

 

يجب أن نضيف component إلى ملف layouts حيث سيظهر على مستوى جميع الصفحات

 

2024-03-12-15-45-16

 

النتيجة هي كما يلي

 

2024-03-12-15-43-41

 

نجرب الآن زيارة الروابط الأخرى

 

2024-03-12-15-49-45

2024-03-12-15-50-15

 

هذا المثال الذي عملنا عليه فهو مجرد مسارات بسيطة

ماذا عن المسارات المضمنة أو المسارات الديناميكية

 

لعمل مسارات متضمنة يمكننا " كما تفكرون "  أن تضع داخل المجلد الأب مجلدا أخر بإسم المسار الذي نريده

سأعمل مجلد بإسم projects ثم  أضع فيه مجلد آخر تحت اسم list ثم أضع page.tsx كملف ل Front-end


2024-03-13-13-58-43

 

ثم بعد ذلك نكتب الأكواد التالية 


2024-03-13-14-16-07

 

 

نعود إلى ملف page.tsx الموجود في مجلد الرئيسي app ثم نضيف له Link لكي نتمكن من زيارة المسار الذي وضعناه مسبقا


2024-03-13-14-02-53

 

إذا ضغطنا على link في الصفحة الرئيسية  سننتقل مباشرة إلى صفحة ال Project List

 

2024-03-13-14-06-09

 

 

لاحظ جيدا المسار كيف أصبح


2024-03-13-14-06-30

 

فقد تبع نفس التسمية للمجلدات التي وضعناها من قبل


2024-03-13-14-07-27

 وهكذا نحصل على المسارات المتضمنة أو ما يعرف ب Nested Routing

 

 

نمر الآن الى المسارات الديناميكية Dynamic Routing و سنرى مدى سهولة التعامل معها في NextJs

 

ومثل هذه المسارات عكس المسارات المتضمنة حيث تعتمد على البيانات الديناميكية التي تتغير بتغير ربما Slugs أو Ids

حيث لايمكننا النتكهن أسماءها لذلك لا نتعامل معها بنفس الطريقة كالمسارات المتضمنة 

وسنتطرق إلى هذه الأمور بالتفصيل في القادم إن شاء الله

---------------------------------------------------------

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

لكي نتعامل معها مثلا في  NextJs يمكننا عمل مجلد واحد بمتغير ما يمكننا من عرض المواضيع بشكل ديناميكي يتغير بتغير البيانات المعروضة

 

لنرى كيف مكننا عمل هذا بمساعدة NextJs Dynamic routing

 

سننشأ مجلدا يكون أسمه موضوع بين معقوفتين [slug] كمثال حيث أن slug هو المتغير الذي سنعتمد عليها في عرض الموضوع المناسب


2024-03-13-14-32-49

 

نضع فيها كودا بسيطا

 

2024-03-13-14-49-24

 

سنقوم بعمل لينكات خاصة بمشاريعنا ضمن ملف page.tsx داخل مجلد project/list

يمكنك أن تعمل الإستايل الذي يناسبك

 

2024-03-13-14-40-47


النتيجة البسيطة هي

2024-03-13-14-44-02

 إذا قمنا بالضغط على أحدهم سيقوم بتحويلنا إلى المسار الذي يحمل نفس Slug التي أعطيناه

مثال إذا ضغطنا على Project 1 فسيقوم بتحويلنا إلى صفحة ProjectDetails لكن المسار سيكون هو كما يلي

2024-03-13-14-54-27

 

لكن المشكلة هو كلما زرنا أي لينك سيعرض لنا نفس الصفحة بدون تغيير ؟؟؟؟؟؟

لكي نصل للمتغير يجب أن نحصل على Params في NextJs

سنقوم بالتعديل على ملف ProjectDetails لكي يصير هكذا

2024-03-13-15-00-53

 

النتيجة تغيرت كما يلي حاليا يمكننا جلب slug من خلال اللينك وسنرى كيف يمكننا أن نستفيد منه

 

2024-03-13-15-02-44

 

هل تظن أننا إنتهينا ... لا بطبيعة الحال فهناك المزيد

تخيل معي أن مع كبر المشروع سيصير لدينا العديد من المجلدات و التي سيصعب علينا تتبعها و بالتالي التعامل معها

هنا تأتي NextJs بما يسمى Routing Group أو تجميع المسارات 

تخيل معي أن لدي مجموعة من المسارات الخاصة بالزبناء مثلا مسار Login - Register 

أو مسارات خاصة بالإدارة Dashboard - User Management - Project Management

وغيرها من المسارات فكيف يمكننا أن نجمعها في مجلد واحد دون أن نراه في Url 

 

سنضع مجلدا تحت إسم (auth) ثم نضع فيه مجلدين آخرين login و register

 

2024-03-13-15-13-31

 

الآن نقوم بزيارة اللينك الموالي 


2024-03-13-15-16-58

 


كما تلاحظون أن في المسار سحب على auth لم يظهرها وذهب مباشرة إلى صفحة Login 

وهذه ميزة أجدها في غاية الأهمية حيث ستمكننا أن ننظم عملنا بشكل أكبر و حتى إذا ذخل أي مبرمج عليه سيسهل عليه التعامل معه

 

 

في رعاية الله



مرحبا بكم وبأسئلتكم



 «•}I|[ الدورة التعليمية للمنتدى NextJs & Tailwind ]|I{•» [ Next JS Routing] موضوع جد مهم
بداية
الصفحة