← مسار IaGenify

الواجهة الأمامية

03 · 3–4 أسابيع

صمّم واجهات حديثة، واربط خدمات حقيقية، وانشرها بثقة.

قدّم الآن↗
ReactGatsbyNext.js

الواجهة الأمامية، يُطبّق عبر عمل حقيقي.

صمّم واجهات حديثة، واربط خدمات حقيقية، وانشرها بثقة.

أنشئ واجهات متقنة تعمل فيما يتجاوز الشاشة الأولى.

تطوّر مرحلة الواجهة الأمامية واجهات حديثة باستخدام React، وتستكشف Gatsby وNext.js وخيارات العرض والنشر على الويب.

اجعل الواجهة نظاماً متكاملاً

يشجع React على تركيب الصفحة من مكوّنات محددة بدلاً من التعامل معها كقالب واحد كبير. ستعمل على حدود المكوّنات وخصائصها وحالتها كي تظل الأنماط المتكررة متسقة وتصبح التعديلات مفهومة.

اختر طريقة وصول الصفحة إلى المتصفح

يوفر Gatsby وNext.js طرقاً لبناء تجارب ويب حديثة وعرضها. يصف العرض من جهة الخادم والتوليد الثابت توقيتين مختلفين لإعداد مخرجات الصفحة. ويساعد فهمهما على اختيار الطريقة المناسبة لاحتياج الصفحة بدلاً من اتباع العادة.

اربط الواجهة وانشرها

تصبح الواجهة الأمامية تطبيقاً عندما تتصل الواجهة بخدمات حقيقية وتعالج الحالات الناتجة عنها. ثم تتناول المرحلة النشر عبر Cloudflare أو Vercel لنقل العمل من التطوير المحلي إلى عنوان ويب متاح للاستخدام.

من الفكرة إلى كود يعمل فعلياً

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

ركّب واجهة من عناصر قابلة لإعادة الاستخدام

يعرض ProgramCard بيانات برنامج واحد، بينما ينظم ProgramList المجموعة والعنوان. تمنع الخصائص تكرار الترميز ويملك كل عنصر مفتاحاً ثابتاً.

function ProgramCard({ title, duration, href }) {
  return (
    <article className="program-card">
      <p className="program-card__duration">{duration}</p>
      <h2>{title}</h2>
      <a href={href} aria-label={`Explore the ${title} program`}>
        View program <span aria-hidden="true">→</span>
      </a>
    </article>
  );
}

export function ProgramList({ programs }) {
  return (
    <section aria-labelledby="programs-title">
      <h1 id="programs-title">Choose a learning path</h1>
      <div className="program-grid">
        {programs.map((program) => (
          <ProgramCard key={program.id} {...program} />
        ))}
      </div>
    </section>
  );
}

اجلب البيانات أثناء عرض الصفحة

تجلب صفحة App Router البيانات داخل Server Component غير متزامن. تناسب إعادة التحقق كل خمس دقائق المحتوى الذي يتغير أحياناً، ويمنع فحص الاستجابة اعتبار الخطأ بيانات سليمة.

async function getPrograms() {
  const response = await fetch("https://api.example.com/programs", {
    next: { revalidate: 300 },
  });

  if (!response.ok) throw new Error("Programs could not be loaded");
  return response.json();
}

export default async function ProgramsPage() {
  const programs = await getPrograms();

  return (
    <main>
      <h1>Programs</h1>
      <ProgramList programs={programs} />
    </main>
  );
}
اقرأ ثم عدّل بنفسك

غيّر أحد المتطلبات، وتوقّع النتيجة، ثم شغّل الكود للتحقق. أثناء المراجعة، اشرح سبب اختيارك واقتراحاً للتحسين التالي.

التقنيات الأساسية
  • React
  • Gatsby
  • Next.js
  • SSR و SSG
  • Cloudflare و Vercel