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

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

حالة الميزة ومعمارية التطبيق

اختر مالكًا لكل حقيقة وأظهر عروضًا مشتقة وأوامر صريحة وافصل تركيب الواجهة من النقل وفحص المجال.

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

أهداف الدرس

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

وضع الحقيقة عند مالك يحفظها

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

تخزين الهوية واشتقاق الكيان المختار

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

typescript نموذج اختيار مشتق مكتمل
import { computed, signal } from "@angular/core";
type Course = { readonly id: number; readonly title: string };
const courses = signal<readonly Course[]>([{ id: 1, title: "Basics" }, { id: 2, title: "Forms" }]);
const selectedId = signal<number | null>(2);
const selected = computed(() => courses().find(course => course.id === selectedId()));
console.log(selected()?.title ?? "none", courses().length);
courses.update(rows => rows.map(row => row.id === 2 ? { ...row, title: "Typed forms" } : row));
console.log(selected()?.title ?? "none");
الناتج المتوقع
Forms 2
Typed forms

يطبع Forms 2 ثم Typed forms ويتبع الاختيار تمثيل الكيان دون عنوان مكتوب آخر.

فصل التنسيق من العرض القابل لإعادة الاستخدام

ينسق حاوي الميزة المسار والنقل والتحليل والمخزن، ويستقبل العرض البيانات ويصدر النية دون عنوان أو حالة عامة. يوفر المقطع المخزن عند حد مسار ويفترض تنفيذه والصفحة والموجّه. النطاق اختيار عمر اختبره بالتنقل. تجنب خدمة تجمع HTTP وDOM والتخزين وأعلام كل صفحة لمجرد سهولة حقنها؛ تصغر الحدود لتوضح الاستبدال والفشل.

typescript مزود ميزة سياقي يملكه المسار
import { Routes } from "@angular/router";
import { CourseFeaturePage } from "./course-feature-page";
import { CourseFeatureStore } from "./course-feature-store";
export const featureRoutes: Routes = [
  { path: "courses", providers: [CourseFeatureStore], component: CourseFeaturePage }
];

يملك حاقن المسار النطاق، وتحتاج إعادة النسخة والتنظيف اختبار سياسة التنقل؛ ولا يبدأ موجّه هنا.

تحفظ الأوامر خاصية موثقة

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

اختبار الحدود بسلوك ملحوظ

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

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

يقدم عنوان الاختيار بعد تحديث السجل.

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

تكتب ميزات مستقلة فوق الحالة المؤقتة.

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

لا يُميز الخطأ من النتيجة الفارغة.

لماذا يحدث؟
طُبع الفشل إلى نجاح.
كيف تصلحه؟
مثّل حالات النتيجة صراحة.
كيف تتجنب تكراره؟
اختبر الفئات عند الحاوي.

اختبر فهمك

1. اضبط selectedId على تسعة وحدّد النتيجة وسياسة حذف المختار بالتحديث.

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

يصير selected غائبًا والبديل none. اختر مسحًا أو حالة مفقود أو حفظ الهوية للتسوية وفق المنتج، لا عنوانًا قديمًا. اختبر الانتقال ووافق عقد العنوان إن كان الاختيار متنقلًا.

2. تحقن بطاقة قابلة للاستخدام خدمة HTTP وتصدر selected. اشرح الترابط والبديل.

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

تتبع البطاقة النقل والنطاق مع العرض فيصعب الاستخدام والاختبار. دع الحاوي يحمل ويفحص ويقدم المدخل ويتلقى النية. إن ملكت البطاقة العمل البعيد حقيقة فوثّقه بدل إخفائه بواجهة عرض ظاهرية.

أهم ما تعلمته

  • امنح كل حقيقة مالكًا واحدًا.
  • اشتق العروض وأظهر الأوامر.
  • أبقِ حدود النقل والمجال والعرض واضحة.

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