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

Vue / الأساسي: المكوّنات التفاعلية وعقود الإدخال / الدرس 2

القوالب والتوجيهات والتعبيرات الآمنة

حوّل الحالة إلى نص وسمات ومناطق شرطية وأحداث بحدود تعبير واضحة.

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

أهداف الدرس

  • ميّز الاستيفاء والربط ومعالجة الحدث.
  • اختر العرض الشرطي وبنية قالب ثابتة.

اجعل تعبيرات القالب صغيرة وذات معنى

تصف قوالب Vue HTML موسعاً بالروابط. يقيم الاستيفاء تعبيراً ويهرب الناتج النصي ولا يعامله قالباً أو برنامج HTML. يستخدم ربط السمات v-bind أو النقطتين، ويستخدم الحدث v-on أو @. اجعل التعبير قيمة مفهومة لا موضع تعديل أعمال معقد. انقل الاشتقاق المكلف أو المتكرر إلى computed أو دالة بعقد واضح. للقالب سياق تنفيذ محدود، فلا تفترض إتاحة كل اسم JavaScript عام.

اربط القيم بنوعها المقصود

تختلف السمة الحرفية والتعبير المربوط. لا تساوي خاصية نصية رقماً أو قيمة منطقية تمرر بالربط. تتبع السمات المنطقية الأصلية قواعد الحضور وينسق Vue قيم DOM. يربط المثال disabled بالحالة ويستخدم زراً حقيقياً. لا تضع الأقواس داخل سمة عادية متوقعاً استيفاءها. اجعل العنوان وصفياً واستفد من دلالة المتصفح للتركيز ولوحة المفاتيح قبل منطق مخصص.

vue نص وربط منطقي وحدث
<script setup>
import { ref } from "vue"
const saving = ref(false)
const label = ref("Reading notes")
</script>

<template>
  <h1>{{ label }}</h1>
  <button type="button" :disabled="saving" @click="saving = true">
    Save notes
  </button>
</template>

في إعداد SFC المذكور يبدأ الزر مفعلاً، ويغيّر الضغط saving إلى true فيعطله. لا ينفذ حفظاً دائماً بل يشرح حلقة الربط دون ادعاء سجل محفوظ.

اختر الإنشاء أو الإظهار بقصد

ينشئ v-if الفرع ويدمره مع دورة الأبناء، بينما يبقي v-show العنصر ويغير display، فتختلف الكلفة والعمر. ليس أي منهما حد إذن؛ قد يوجد المخفي بالعميل ويبقى تفويض الخادم مطلوباً. اختر بتكرار التفاعل والتهيئة والملكية، واتبع بنية تتابع else الموثقة. يحتاج إزالة عنصر مركز وجهة تركيز مفيدة، خصوصاً في النموذج والحوار.

استخرج قرار عرض واضحاً

تجعل الدالة الخالصة عقد الحالة والرسالة قابلاً للاختبار بلا متصفح. يميز المثال التحميل والفشل والفراغ والجاهزية بدل شروط متداخلة. قرر في الحقيقي بقاء البيانات القديمة عند فشل التحديث؛ التنافي نموذج واحد فقط. يستخدم JavaScript بيانات اصطناعية بلا Vue فتتحقق توقعاته محلياً، ويبقى عرض الرسالة وإتاحة تغيرها بحاجة اختبار منفصل.

javascript مثال كامل خالص لحالة العرض
function displayState({ loading, failed, count }) {
  if (loading) return "Loading notes"
  if (failed) return "Could not load notes"
  return count === 0 ? "No notes yet" : "Notes ready"
}

if (displayState({ loading: false, failed: false, count: 0 }) !== "No notes yet") {
  throw new Error("DISPLAY_STATE_MISMATCH")
}

يعمل JavaScript مستقلاً تحت Node دون Vue أو شبكة، وينجح تحقق الفراغ. لا يربط مكوّناً أو يثبت إعلان قارئ الشاشة.

احفظ صحة HTML وحدود المحتوى

يترجم Vue القالب ويبقى تحليل HTML مهماً خصوصاً مع SSR؛ قد يصلح المتصفح التداخل الخاطئ لشجرة مختلفة. استخدم الدلالة ولا تربط قالب خادم غير موثوق. يدخل v-html محتوى يتجاوز الهروب، فلا يستخدم إلا بعقد ثقة أو تنقية مناسب. لا تحول القيمة لمصدر قالب Vue تنفيذي. افصل الأمان والوصول والعرض وتحقق منها ولا تعتبر الترجمة إثباتاً للجميع.

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

يظهر الاستيفاء حرفياً في السمة

لماذا يحدث؟
استُخدمت صياغة النص بدل ربط السمة.
كيف تصلحه؟
استخدم تعبير v-bind المناسب.
كيف تتجنب تكراره؟
ميّز صياغة النص والسمة عند المراجعة.

يُعامل الزر المخفي كتفويض

لماذا يحدث؟
اختلط العرض بإذن الخادم.
كيف تصلحه؟
افرض الفعل المحمي بالخادم.
كيف تتجنب تكراره؟
راجع الإظهار وضبط الوصول منفصلين.

يفقد الشرط مسودة دون توقع

لماذا يحدث؟
دمر v-if المكوّن مالك الحالة.
كيف تصلحه؟
انقل الملكية أو اختر الإظهار بقصد.
كيف تتجنب تكراره؟
وثق عمر الحالة قبل التوجيه.

اختبر فهمك

1. لوحة مساعدة كثيرة التبديل تحوي إدخالاً محلياً. قارن التوجيهين.

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

يعيد v-if الإنشاء وقد يصفر حالة الفرع، ويحفظ v-show الفرع مخفياً. اختر بالعمر والكلفة وتحقق من عدم بقاء التركيز بالمخفي. لا يعوض أيهما الإذن.

2. يحتوي عنوان درس علامة &. هل يستبدل الاستيفاء بـ v-html؟

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

لا؛ يناسب الاستيفاء النص ويهربه. يحتاج HTML الغني مطلباً وتصميماً مستقلاً للتنقية والثقة، ولا تبرر علامة ترقيم تجاوز حد النص.

أهم ما تعلمته

  • للقالب صيغ نص وربط وحدث مختلفة.
  • يغير العرض الشرطي العمر والمظهر.
  • تبقى صحة HTML وأمان المحتوى مسؤولية التطبيق.

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