محتويات الدورة

Angular / المتقدم / الدرس 15

التحميل المؤجل وحدود المسارات

افصل تحميل الشيفرة من جلب البيانات واجعل حالات التأجيل مفيدة وافحص البناء بدل افتراض تقسيم فعال من كتلة.

وقت القراءة التقريبي: 3 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • شرح محفزات defer وحالاتها وشروط الاعتماديات.
  • اختيار حد المسار والعرض لأعمال مختلفة.
  • اختبار التحميل والفشل والإتاحة دون أزمنة مختلقة.

تحميل الشيفرة وطلب البيانات عمليتان منفصلتان

قد تؤجل الميزة JavaScript وتجلب البيانات فورًا أو العكس. حدّد الحد قبل الآلية. تؤخر loadComponent الصفحة بالتنقل وتؤخر @defer جزء العرض بالمحفز. لا تؤمنان البيانات أو تلغيان كل طلب أو تضمنان حزمة أصغر دائمًا؛ وقد يمنع مرجع مبكر التقسيم. اختر وفق مهام فعلية وقِس النواتج والتفاعل بالإعداد المحدد.

فحص قواعد قالب التأجيل محليًا

يحلل البرنامج الرسمي عرضًا مؤجلًا بزر أصلي وحالة قبل التحميل وخطأ. يثبت النجاح القواعد لا وجود ReportPanel أو استقلالها أو استيرادها أو فصل حزمة. المحدد سياقي عمدًا وتحتاج الشروط تجربة تطبيق وبناء. لا يبدأ الفحص متصفحًا أو طلبًا أو خادمًا ولا يدعي توقيتًا؛ فاحتفظ بهذا الحد عند استخدامه بالبناء.

typescript فحص مكتمل محلي لقواعد التأجيل
import { parseTemplate } from "@angular/compiler";
const template = `
<button #trigger type="button">Show report</button>
@defer (on interaction(trigger)) {
  <app-report-panel />
} @placeholder {
  <p>Report not loaded</p>
} @error {
  <p>Report could not load</p>
}`;
const parsed = parseTemplate(template, "report.html");
if (parsed.errors?.length) { throw new Error("defer parse failed"); }
console.log("defer template parsed");
الناتج المتوقع
defer template parsed

يثبت السطر التحليل فقط دون عرض أو تقسيم أو تفعيل أو عرض خطأ.

جعل الاعتماديات قابلة للتأجيل والحالات مفهومة

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

استخدام حد مسار لتحميل الصفحة

يفترض المسار ReportsPage مستقلة مصدرة من الملف. يسمح الاستيراد الديناميكي بحد كسول إن لم يحفظه مسار مبكر، ويحتاج الموجه توفيرًا ومخرجًا. ادعم العنوان المباشر وعالج فشل القطعة. لا يشغل المقطع لتبعيته ولا تُختلق أسماء أو وفورات قبل فحص البناء.

typescript مسار صفحة كسول سياقي
import { Routes } from "@angular/router";
export const routes: Routes = [
  { path: "reports", loadComponent: () => import("./reports-page").then(module => module.ReportsPage) }
];

مع الملف والإعداد يمكن للتنقل تحميل الصفحة، ولا ينفذ مسار أو طلب قطعة أو مضيف هنا.

قياس التنزيل والتفاعل معًا

افحص غياب الشيفرة من البداية ووجودها عند الحاجة واختبر كل حالة والتكرار والمغادرة. افصل التحميل البارد والمخزن بشروط واقعية ببيئة مصرح بها. قد يحسن البدء ويضر انتظار كل فعل. يغير الجلب المسبق توقيت الموارد حسب الحمل، ويحفظ كل وضع الاسم والتركيز. افصل دليل التحليل والبناء والقياس.

الأخطاء الشائعة وإصلاحها

يبقى المكوّن المؤجل بحزمة البداية.

لماذا يحدث؟
يمنع التقسيم مرجع مبكر أو بنية غير مدعومة.
كيف تصلحه؟
راجع الشروط وشبكة الناتج.
كيف تتجنب تكراره؟
افحص البناء قبل ادعاء الوفر.

لا تملك حالة ما قبل التحميل محفز لوحة صالحًا.

لماذا يحدث؟
حُسن التحميل دون عقد التفاعل.
كيف تصلحه؟
استخدم محفزًا أصليًا ميسرًا واستعادة.
كيف تتجنب تكراره؟
اختبر اللوحة والتركيز عبر الحالات.

معاملة نجاح المحلل كإثبات تقسيم القطع.

لماذا يحدث؟
خُلطت القواعد بدلالة بناء التطبيق.
كيف تصلحه؟
أضف فحص البناء والمضيف الكامل.
كيف تتجنب تكراره؟
سمِّ كل طبقة بدقة.

اختبر فهمك

1. يُذكر مكوّن التقرير خارج defer بالملف نفسه. اشرح المشكلة ودليل إصلاحها.

اعرض الحل المشروح

قد يمنع المرجع المبكر التأجيل. افحص المراجع والقطع قبل النقل، ولا تزل الاعتماد إلا إذا سمح العقد ثم اختبر الحالتين. لا تثبت صحة القالب حد التحميل.

2. تحمل صفحة شيفرتها بكسل وتطلب البيانات المكلفة عند الإقلاع. هل تؤجل الميزة كلها؟

اعرض الحل المشروح

لا؛ حدا الشيفرة والبيانات مستقلان. اختر بدء الطلب حسب الزمن والموارد واختبر العد والإلغاء منفصلين. لا تنقله لشعار؛ احفظ التجربة وسياسة الخادم.

أهم ما تعلمته

  • افصل تحميل الشيفرة من جاهزية البيانات.
  • افحص الأهلية والقطع الفعلية.
  • اجعل كل حالة مفيدة قابلة للاختبار.

المراجع الرسمية