0Pricing
React Academy · درس

مشكلة التمهيد الكامل

قِس تكلفة تمهيد تطبيق React SPA بالكامل، وافهم سبب عدم حاجة الصفحات الثابتة إليه

مشكلة التمهيد الكامل درس مجاني في React Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في React Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة React Academy 4 دروس في المجموع.

ما المقصود بـ Hydration

Hydration هي العملية التي يأخذ فيها React كود HTML المصيّر على الخادم ويربط به مستمعي أحداث JavaScript. يرسل الخادم HTML الأولي بسرعة، ثم ينزّل المتصفح حزمة JavaScript ويجري React عملية Hydration لـ HTML الثابت حتى يجعله تفاعليًا. وإلى أن تكتمل Hydration، تبدو الصفحة تفاعلية لكنها ليست كذلك.

تكلفة Hydration في تطبيقات SPA التقليدية

ترسل تطبيقات الصفحة الواحدة التقليدية حزمة JavaScript كاملة إلى المتصفح. ويجب على React تنزيلها وتحليلها وتنفيذها، ثم ربط مستمعي الأحداث بكل مكوّن في شجرة المكوّنات. وقد تستغرق هذه العملية عدة ثوانٍ في التطبيقات الكبيرة على الأجهزة المحمولة متوسطة الإمكانات.

الزمن حتى التفاعل (TTI)

يقيس الزمن حتى التفاعل المدة اللازمة قبل أن يتمكن المستخدم من التفاعل مع الصفحة. وتؤثر Hydration مباشرةً في TTI: فقد تبدو الصفحة جاهزة، لأن HTML المصيّر على الخادم ظاهر، لكن الأزرار والنماذج لا تستجيب حتى ينتهي React من ربط مستمعي الأحداث. ويشير ارتفاع قيمة TTI إلى تجربة مستخدم سيئة.

مفارقة المحتوى الثابت

لنتأمل صفحة تسويقية: 80% من محتواها عبارة عن نصوص وصور وعناوين ثابتة لا تتغير أبدًا. ولا تتضمن التفاعلية إلا 20%، مثل نموذج الاشتراك في النشرة الإخبارية أو مشغّل الفيديو. ومع ذلك، تظل Hydration في تطبيق SPA تقليدي تعمل على 100% من الصفحة، فتعالج المكوّنات الثابتة بلا داعٍ.

قياس تكلفة Hydration

يكشف تحليل الأداء في Chrome DevTools تكلفة Hydration. ففي المخطط الزمني لسلسلة التعليمات الرئيسية، يمكن تحديد مهمة «React hydration» بوصفها كتلة تنفيذ JavaScript طويلة بعد الرسم الأولي. وكلما طالت هذه الكتلة، انشغلت سلسلة التعليمات الرئيسية مدة أطول وأصبحت الصفحة أقل استجابة.

حجم شجرة المكوّنات مهم

كلما كبرت شجرة مكوّنات React، زاد العمل المطلوب لتنفيذ Hydration. إذ يجب على React زيارة كل مكوّن، ومقارنة HTML المصيّر على الخادم بما سيصيّره المكوّن، وربط مستمعي الأحداث. وقد يكون لتطبيق معقد يضم مئات المكوّنات عبء Hydration ملحوظ حتى على الأجهزة السريعة.

Hydration المتزامنة في React 18

قدّم React 18 Hydration المتزامنة، التي تتيح لـ React تقسيم Hydration إلى أجزاء أصغر وإتاحة المجال للمتصفح بينها. ويمنع ذلك المتصفح من الظهور متجمّدًا تمامًا أثناء تنفيذ Hydration للأشجار الكبيرة. لكن Hydration المتزامنة تقلل الأثر ولا تلغي التكلفة الأساسية.

Hydration الانتقائية في React 18

تتيح Hydration الانتقائية، عبر Suspense، لـ React تنفيذ Hydration للمكوّنات حسب الأولوية؛ إذ تؤدي تفاعلات المستخدم إلى تنفيذ Hydration فورًا للمكوّن المعني. ويحسّن ذلك سرعة الاستجابة، لكنه يظل يعمل ضمن شجرة React واحدة، ما يعني تنفيذ Hydration لجميع المكوّنات في الشجرة في نهاية المطاف.

الرؤية الأساسية

تتمثل الرؤية الأساسية التي تقود Islands Architecture في أن معظم صفحات الويب المعتادة لا تحتاج إلى JavaScript أصلًا. فأشرطة التنقل وأقسام الواجهة الرئيسية وروابط التذييل ونصوص منشورات المدونات ووصف المنتجات هي عناصر عرضية بحتة. وفرض Hydration عليها يُعد إهدارًا بطبيعته.

الأثر في العالم الحقيقي

تُظهر الدراسات التي أجرتها فرق أداء الويب أن وقت تحليل JavaScript وتنفيذها هو التكلفة الأكبر على الأجهزة المحمولة. فتستغرق حزمة JavaScript بحجم 300 كيلوبايت من ثانيتين إلى ثلاث ثوانٍ لتحليلها على هاتف Android متوسط. ويحقق تقليل JavaScript المرسلة إلى المتصفح فوائد كبيرة في الأداء مقارنةً بأي تحسين داخلي في React.

ضريبة Hydration

تضيف كل كيلوبايت من JavaScript إلى تطبيق React عملًا إضافيًا أثناء Hydration. وحتى إذا كان المكوّن للزينة فقط، فإنه يشارك في Hydration ما دام موجودًا في شجرة React. وتتسع «ضريبة Hydration» مع زيادة حجم التطبيق، ما يجعل الحفاظ على درجات TTI جيدة أصعب تدريجيًا مع نمو التطبيقات.

TTI وHydration

ما العلاقة بين Hydration في React والزمن حتى التفاعل (TTI)؟

ملخص الدرس

تعالج Hydration التقليدية في React شجرة المكوّنات بأكملها، حتى المحتوى الثابت الذي لا يحتاج إلى JavaScript. وهذا يحجب الزمن حتى التفاعل ويتوسع بصورة سيئة مع زيادة حجم التطبيق. وتقلل تحسينات Hydration المتزامنة والانتقائية في React 18 الأثر، لكنها لا تلغي التكلفة الأساسية. أما الرؤية الأساسية فهي أن معظم محتوى الصفحة لا يحتاج إلى JavaScript، ولذلك فإن تنفيذ Hydration كاملة يُعد إهدارًا.

الأسئلة الشائعة

هل درس «مشكلة التمهيد الكامل» مجاني؟

نعم — نص درس «مشكلة التمهيد الكامل» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة React Academy، انتقل إلى CoddyKit PRO. تتضمن دورة React Academy 4 دروس في المجموع.

ماذا ستتعلم في «مشكلة التمهيد الكامل»؟

قِس تكلفة تمهيد تطبيق React SPA بالكامل، وافهم سبب عدم حاجة الصفحات الثابتة إليه تتمرن على React Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ React Academy؟

لا تُشترط خبرة سابقة. React Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «مشكلة التمهيد الكامل»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس React Academy هذا؟

نعم. كل درس في React Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. مشكلة التمهيد الكامل
  2. بنية الجزر: التمهيد الانتقائي
  3. إعداد Astro وجزر React
  4. قياس الأداء: Lighthouse وCore Web Vitals
← العودة إلى React Academy