أنواع App Router؛ مكوّنات الخادم مقابل العميل
افهم الإعدادات الافتراضية لـ App Router (مكوّنات الخادم)، ومتى تختار مكوّنات العميل، وكيف تحدد أنواع معالجات المسارات.
أنواع App Router؛ مكوّنات الخادم مقابل العميل درس مجاني في TypeScript Academy على CoddyKit. هذا هو الدرس 1 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في TypeScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة TypeScript Academy 3 دروس في المجموع.
مقدمة
الهدف: استخدام App Router مع TypeScript بثقة. ستتعرّف على مكوّنات الخادم (الافتراضية)، وتفعّل مكوّنات العميل عند الحاجة، وتحدد أنواع معالجات المسارات لنقاط نهاية API.
- إمكانات الخادم مقابل العميل
- تمرير الخصائص ذات الأنواع بينهما
- تحديد أنواع NextRequest/NextResponse
مكوّن الخادم
الملفات الموجودة ضمن app/ هي مكوّنات خادم افتراضيًا. يمكنك تشغيل شيفرة خاصة بالخادم وجلب البيانات قبل العرض.
// app/page.tsx (server component by default)
export default async function Page() {
// Server code: read env, fetch data, call DB (conceptually)
const data: { message: string } = { message: "Hello from server component" }
return (
<main style={{ display: "grid", gap: 8 }}>
<h1>Home</h1>
<p>{data.message}</p>
</main>
)
}مكوّن العميل
أضف التوجيه "use client" في الأعلى لتمكين الخطافات ومعالجات الأحداث. تعمل مكوّنات العميل في المتصفح.
"use client"
import { useState } from "react"
// app/components/Counter.tsx (client component)
export default function Counter() {
const [n, setN] = useState(0)
return (
<div style={{ display: "flex", gap: 8, alignItems: "center" }}>
<button onClick={() => setN(n - 1)}>-</button>
<span>{n}</span>
<button onClick={() => setN(n + 1)}>+</button>
</div>
)
}خصائص الخادم ← العميل
احسب البيانات على الخادم ومرّرها بوصفها خصائص ذات أنواع إلى مكوّنات العميل. أبقِ المنطق الخاص بالخادم بعيدًا عن العميل.
// app/page.tsx (server) + client import
import Counter from "./components/Counter"
export default async function Page() {
const initial = 5 // fetched or computed on the server
return (
<main style={{ display: "grid", gap: 12 }}>
<h2>Dashboard</h2>
<CounterWithStart start={initial} />
</main>
)
}
// app/components/CounterWithStart.tsx
"use client"
import { useState } from "react"
export default function CounterWithStart({ start }: { start: number }) {
const [n, setN] = useState(start)
return (
<div style={{ display: "flex", gap: 8, alignItems: "center" }}>
<button onClick={() => setN(n - 1)}>-</button>
<span>{n}</span>
<button onClick={() => setN(n + 1)}>+</button>
</div>
)
}معالجات المسارات
استخدم NextRequest/NextResponse لمعالجات ذات أنواع ضمن app/api/*/route.ts. أعد JSON مع رموز الحالة.
// app/api/hello/route.ts (App Router API)
import { NextRequest, NextResponse } from "next/server"
export async function GET(req: NextRequest) {
const name = req.nextUrl.searchParams.get("name") ?? "world"
const body: { message: string } = { message: `Hello, ${name}!` }
return NextResponse.json(body, { status: 200 })
}
export async function POST(req: NextRequest) {
const payload = (await req.json()) as { name?: string }
const body = { created: true, name: payload.name ?? "anon" }
return NextResponse.json(body, { status: 201 })
}نصائح
نصائح:
- اجعل مكوّنات الخادم هي الخيار الافتراضي، ولا تستخدم مكوّنات العميل إلا عند الحاجة إلى التفاعل.
- أبقِ الخصائص صغيرة وقابلة للتسلسل بين الخادم والعميل.
- استخدم بنى
NextResponse.jsonذات الأنواع بشكل متسق.
التحقق من العميل في App Router
تحقق سريع: كيف تمكّن الخطافات في ملف مكوّن ضمن App Router؟
خلاصة
خلاصة: يعيّن App Router مكوّنات الخادم كخيار افتراضي؛ أضف "use client" للتفاعل، ومرّر الخصائص ذات الأنواع عبر الحد الفاصل، وحدد أنواع معالجات المسارات باستخدام NextRequest/NextResponse.
الأسئلة الشائعة
هل درس «أنواع App Router؛ مكوّنات الخادم مقابل العميل» مجاني؟
نعم — نص درس «أنواع App Router؛ مكوّنات الخادم مقابل العميل» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة TypeScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة TypeScript Academy 3 دروس في المجموع.
ماذا ستتعلم في «أنواع App Router؛ مكوّنات الخادم مقابل العميل»؟
افهم الإعدادات الافتراضية لـ App Router (مكوّنات الخادم)، ومتى تختار مكوّنات العميل، وكيف تحدد أنواع معالجات المسارات. تتمرن على TypeScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ TypeScript Academy؟
لا تُشترط خبرة سابقة. TypeScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 3.
كم من الوقت يستغرق درس «أنواع App Router؛ مكوّنات الخادم مقابل العميل»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس TypeScript Academy هذا؟
نعم. كل درس في TypeScript Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- أنواع App Router؛ مكوّنات الخادم مقابل العميل
- جلب البيانات وكتابة الإجراءات
- كتابة متغيرات البيئة والإعدادات