المسارات المتوازية والمتداخلة
نفّذ أنماطًا متقدمة لواجهة المستخدم، مثل المسارات المتوازية للأقسام المستقلة والمسارات المتداخلة لتجارب شبيهة بالنوافذ المنبثقة.
المسارات المتوازية والمتداخلة درس مجاني في Next.js 15 Fullstack Web Apps على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Next.js 15 Fullstack Web Apps، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Next.js 15 Fullstack Web Apps 4 دروس في المجموع.
بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.
Advanced Routing Patterns
Welcome! In this lesson, we'll dive into two powerful Next.js App Router features: Parallel Routes and Intercepting Routes.
These patterns help you build more complex, flexible, and performant user interfaces.
Independent UI with Parallel Routes
Parallel Routes allow you to render multiple independent views or "slots" within the same layout, at the same time.
Think of a dashboard with different sections (e.g., analytics, recent activity) loading independently, or a social media feed with a profile sidebar.
Defining Parallel Route Slots
You define a parallel route by creating a folder prefixed with @, like @team or @analytics, inside your layout's directory.
- Each
@slotfolder contains its ownpage.jsorroute.js. - The parent
layout.jsreceives these slots as props.
Parallel Routes File Structure
Here's how you might set up a dashboard with two parallel slots: @users and @reports. The main layout.js renders both.
File Structure:
app/
├── dashboard/
│ ├── @users/
│ │ └── page.js
│ ├── @reports/
│ │ └── page.js
│ └── layout.js
└── page.jsParallel Route Layout Code
The layout.js receives the parallel slots as props and renders them. If a slot isn't active for the current URL, Next.js can render a default.js.
/* app/dashboard/layout.js */
export default function DashboardLayout({ children, users, reports }) {
return (
<div>
<h1>Dashboard</h1>
<div style={{ display: 'flex' }}>
<div style={{ flex: 1 }}>{users}</div>
<div style={{ flex: 1 }}>{reports}</div>
</div>
{children} {/* Renders content of dashboard/page.js if present */}
</div>
);
}
/* app/dashboard/@users/page.js */
export default function UsersPage() {
return (
<div style={{ border: '1px solid blue', padding: '10px' }}>
<h2>Users Section</h2>
<p>List of active users...</p>
</div>
);
}
/* app/dashboard/@reports/page.js */
export default function ReportsPage() {
return (
<div style={{ border: '1px solid green', padding: '10px' }}>
<h2>Reports Section</h2>
<p>Monthly sales report...</p>
</div>
);
}Intercepting Routes for Modals
Intercepting Routes allow you to "catch" a route from within the current layout and display it as an overlay or modal, without changing the browser's URL.
This is perfect for showing image galleries, product details, or login forms on top of the current page.
Defining Intercepting Routes
Intercepting routes use the (.), (..), or (...) conventions to match segments at different levels relative to the current route.
(.)segment: Catches a segment at the same level.(..)segment: Catches a segment one level above.(...)segment: Catches a segment at the rootappdirectory level.
Intercepting a Sibling Route
Imagine a photo gallery. When you click a photo, instead of navigating to /photos/123, a modal opens, but the URL remains /photos.
File Structure:
app/
├── photos/
│ ├── @modal/(.)[id]/
│ │ └── page.js
│ ├── page.js
│ └── layout.jsIntercepting Route Code Example
Here's a simplified example for a photo modal. The @modal slot catches the [id] route when navigated from /photos, displaying it as an overlay.
/* app/photos/page.js */
import Link from 'next/link';
export default function PhotosPage() {
const photos = [{ id: '1', title: 'Sunset' }, { id: '2', title: 'Mountain' }];
return (
<div>
<h1>My Photos</h1>
<div style={{ display: 'grid', gridTemplateColumns: 'repeat(2, 1fr)', gap: '10px' }}>
{photos.map(photo => (
<Link key={photo.id} href={`/photos/${photo.id}`}>
<div style={{ border: '1px solid #ccc', padding: '10px', textAlign: 'center' }}>
<h3>{photo.title}</h3>
<p>(Click to view)</p>
</div>
</Link>
))}
</div>
</div>
);
}
/* app/photos/@modal/(.)[id]/page.js */
export default function PhotoModal({ params }) {
return (
<div style={{
position: 'fixed', top: '0', left: '0', right: '0', bottom: '0',
backgroundColor: 'rgba(0,0,0,0.5)', display: 'flex',
justifyContent: 'center', alignItems: 'center'
}}>
<div style={{ background: 'white', padding: '20px', borderRadius: '8px' }}>
<h2>Photo ID: {params.id}</h2>
<p>This is a modal for photo details.</p>
<Link href="/photos">Close Modal</Link>
</div>
</div>
);
}When to Use Which Pattern
Parallel Routes are for displaying multiple, independent sections of UI simultaneously in a fixed layout (e.g., dashboards).
Intercepting Routes are for displaying content on top of the current page, typically as a modal, without changing the underlying URL (e.g., image viewers).
They solve different but equally important UI challenges!
Route Pattern Challenge
Consider a social media profile page. You want to display a user's posts on the left and their followers list on the right, both updating independently. Additionally, clicking a post should open its full view in a modal.
Which routing patterns would best achieve these two distinct UI requirements?
Recap: Advanced Routing
Great job! You've learned about two powerful Next.js App Router features:
- Parallel Routes (
@slotfolders) for displaying independent UI segments side-by-side. - Intercepting Routes (
(.),(..),(...)conventions) for catching routes and showing them as overlays or modals.
These patterns unlock advanced UI compositions for complex applications.
تعلم TypeScript مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 12
- الدروس
- 48
الأسئلة الشائعة
هل درس «المسارات المتوازية والمتداخلة» مجاني؟
نعم — نص درس «المسارات المتوازية والمتداخلة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Next.js 15 Fullstack Web Apps، انتقل إلى CoddyKit PRO. تتضمن دورة Next.js 15 Fullstack Web Apps 4 دروس في المجموع.
ماذا ستتعلم في «المسارات المتوازية والمتداخلة»؟
نفّذ أنماطًا متقدمة لواجهة المستخدم، مثل المسارات المتوازية للأقسام المستقلة والمسارات المتداخلة لتجارب شبيهة بالنوافذ المنبثقة. تتمرن على Next.js 15 Fullstack Web Apps مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Next.js 15 Fullstack Web Apps؟
لا تُشترط خبرة سابقة. Next.js 15 Fullstack Web Apps على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «المسارات المتوازية والمتداخلة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Next.js 15 Fullstack Web Apps هذا؟
نعم. كل درس في Next.js 15 Fullstack Web Apps يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- المسارات الديناميكية والمقاطع الشاملة
- التنسيقات المتداخلة ومجموعات المسارات
- المسارات المتوازية والمتداخلة
- اصطلاحات واجهة التحميل والأخطاء