التوجيهات المخصّصة
سجّل التوجيهات العامة والمحلية باستخدام hooks لدورة الحياة مثل mounted وupdated لتغليف منطق التعامل مع DOM خارج المكوّنات
التوجيهات المخصّصة درس مجاني في Frontend Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Frontend Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Frontend Academy 4 دروس في المجموع.
ما التوجيهات؟
التوجيهات هي منطق قابل لإعادة الاستخدام لمعالجة DOM، يُربط بالعناصر عبر البادئة v-. ومن أمثلتها المضمنة: v-if وv-for وv-model وv-show. وتتيح لك التوجيهات المخصصة إنشاء توجيهاتك الخاصة.
حالة استخدام: التركيز التلقائي
يمكن للتوجيه encapsulate أجزاء صغيرة من معالجة DOM لا تبرر إنشاء مكوّن غلاف.
<template>
<input v-focus>
</template>
<script setup>
const vFocus = {
mounted: (el) => el.focus()
};
</script>تسجيل التوجيهات محليًا
في <script setup>، عرّف التوجيهات بالبادئة v، وسيسجلها Vue تلقائيًا محليًا.
<script setup>
const vColor = {
mounted: (el, binding) => {
el.style.color = binding.value;
}
};
</script>
<template>
<p v-color="'red'">Hello</p>
</template>تسجيل التوجيهات عالميًا
استخدم app.directive(name, definition) لجعل التوجيه متاحًا في كل مكان.
// main.ts
const app = createApp(App);
app.directive('focus', {
mounted: (el) => el.focus()
});
app.mount('#app');خطافات دورة حياة التوجيهات
للتوجيهات خطافات تحاكي دورة حياة المكوّن: created وbeforeMount وmounted وbeforeUpdate وupdated وbeforeUnmount وunmounted.
const vColor = {
beforeMount(el, binding) {
el.style.color = binding.value;
},
updated(el, binding) {
el.style.color = binding.value;
}
};كائن binding
تتلقى الخطافات كائن binding يحتوي على: value وoldValue وarg وmodifiers وinstance.
<p v-pin:bottom.left="200">Pinned</p>
// binding inside the directive:
// { value: 200, oldValue: ..., arg: 'bottom', modifiers: { left: true } }مثال عملي: v-click-outside
توجيه شائع يستدعي معالجًا عندما ينقر المستخدم خارج العنصر.
const vClickOutside = {
mounted(el, binding) {
el._handler = (e) => {
if (!el.contains(e.target)) binding.value(e);
};
document.addEventListener('click', el._handler);
},
unmounted(el) {
document.removeEventListener('click', el._handler);
}
};
// Usage:
<div v-click-outside="closeMenu">...</div>مثال عملي: v-tooltip
أرفق تلميح Tippy/Popper عبر توجيه، لتحافظ على نظافة القوالب.
import tippy from 'tippy.js';
const vTooltip = {
mounted(el, binding) {
el._tippy = tippy(el, { content: binding.value });
},
updated(el, binding) {
el._tippy?.setContent(binding.value);
},
unmounted(el) {
el._tippy?.destroy();
}
};v-debounce: تقليل تكرار أحداث الإدخال
أضف debounce حول معالج @input لحقل إدخال باستخدام توجيه مخصص.
const vDebounce = {
mounted(el, binding) {
let timer;
el.addEventListener('input', () => {
clearTimeout(timer);
timer = setTimeout(() => binding.value(el.value), 300);
});
}
};
<input v-debounce="search">التوجيه مقابل المكوّن مقابل Composable
Composables: منطق يمتلك حالة، مثل البيانات وrefs. المكونات: بنية واجهة قابلة لإعادة الاستخدام مع قالبها الخاص. التوجيهات: سلوك DOM مباشر على عنصر موجود. اختر التوجيه عندما لا تحتاج إلى قالب أو ترميز.
اعتبارات الأداء
تعمل التوجيهات عند كل تحديث، لذا اجعلها قليلة التكلفة. بالنسبة إلى العمليات المكلفة، استخدم الشرط binding.value !== binding.oldValue لتخطي العمل غير الضروري.
تحقق سريع
ما الفرق بين استخدام توجيه Vue واستخدام مكوّن Vue لإضافة سلوك؟
مراجعة: التوجيهات المخصصة
منطق DOM قابل لإعادة الاستخدام ومسبوق بـ v. سجّله محليًا (ثابت vName في script setup) أو عالميًا (app.directive). خطافات دورة الحياة: mounted وupdated وunmounted. يوفر binding القيم value وoldValue وarg وmodifiers. استخدم التوجيهات للسلوك المباشر في DOM، مثل التركيز والنقر خارج العنصر والتلميحات وdebounce. استخدم المكونات للترميز، وComposables للمنطق ذي الحالة، والتوجيهات لإضافة السلوك إلى DOM.
الأسئلة الشائعة
هل درس «التوجيهات المخصّصة» مجاني؟
نعم — نص درس «التوجيهات المخصّصة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Frontend Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Frontend Academy 4 دروس في المجموع.
ماذا ستتعلم في «التوجيهات المخصّصة»؟
سجّل التوجيهات العامة والمحلية باستخدام hooks لدورة الحياة مثل mounted وupdated لتغليف منطق التعامل مع DOM خارج المكوّنات تتمرن على Frontend Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Frontend Academy؟
لا تُشترط خبرة سابقة. Frontend Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «التوجيهات المخصّصة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Frontend Academy هذا؟
نعم. كل درس في Frontend Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- provide() وinject() لحقن الاعتماديات
- المكوّنات غير المتزامنة وSuspense
- التوجيهات المخصّصة
- نظام الإضافات: app.use()