نظام الإضافات: app.use()
أنشئ إضافة Vue باعتبارها كائنًا يحوي method باسم install، وسجّل المكوّنات والتوجيهات العامة، ووفّر القيم للتطبيق بأكمله
نظام الإضافات: app.use() درس مجاني في Frontend Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Frontend Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Frontend Academy 4 دروس في المجموع.
ما مكوّن Vue الإضافي؟
المكوّن الإضافي هو وظيفة قابلة لإعادة الاستخدام تثبتها في تطبيق Vue، مثل المكونات العالمية والتوجيهات والقيم الموفَّرة والمساعدات على نمط prototype مثل router وi18n وpinia. وتُستخدم المكونات الإضافية لدمج المكتبات مع Vue.
بنية المكوّن الإضافي
المكوّن الإضافي هو كائن يحتوي على أسلوب install(app, options)، أو دالة تؤدي دور أسلوب التثبيت.
// MyPlugin.ts
export default {
install(app, options) {
// Configure things here
}
};تثبيت مكوّن إضافي
استدعِ app.use(plugin, options) على مثيل تطبيق Vue.
import { createApp } from 'vue';
import App from './App.vue';
import MyPlugin from './plugins/MyPlugin';
const app = createApp(App);
app.use(MyPlugin, { theme: 'dark' });
app.mount('#app');حالة استخدام المكوّن الإضافي: المكونات العالمية
سجّل العديد من المكونات الصغيرة عالميًا حتى لا يضطر المستهلكون إلى استيراد كل مكوّن على حدة.
// plugins/iconPack.ts
import IconChevron from './IconChevron.vue';
import IconClose from './IconClose.vue';
import IconUser from './IconUser.vue';
export default {
install(app) {
app.component('IconChevron', IconChevron);
app.component('IconClose', IconClose);
app.component('IconUser', IconUser);
}
};
// main.ts
app.use(iconPack);حالة استخدام المكوّن الإضافي: التوجيهات العالمية
سجّل التوجيهات المخصصة مرة واحدة لتصبح متاحة على مستوى التطبيق.
export default {
install(app) {
app.directive('focus', { mounted: (el) => el.focus() });
app.directive('click-outside', clickOutsideDirective);
}
};حالة استخدام المكوّن الإضافي: provide()
وفّر قيمًا على مستوى التطبيق يمكن لأي مكوّن حقنها، وهذا شائع مع عملاء API والإعدادات.
import type { InjectionKey } from 'vue';
import { ApiClient } from './ApiClient';
export const ApiKey: InjectionKey<ApiClient> = Symbol('api');
export default {
install(app, { baseURL }) {
const api = new ApiClient({ baseURL });
app.provide(ApiKey, api);
}
};
// Anywhere:
const api = inject(ApiKey)!;المكونات الإضافية الفعلية: Pinia وVue Router وi18n
المكتبات الرئيسية في منظومة Vue هي مكونات إضافية.
import { createPinia } from 'pinia';
import router from './router';
import { createI18n } from 'vue-i18n';
const app = createApp(App);
app.use(createPinia());
app.use(router);
app.use(createI18n({ /* ... */ }));خيارات المكوّن الإضافي
تقبل المكونات الإضافية خيارات لتهيئة سلوكها وقت التثبيت.
app.use(MyPlugin, {
apiUrl: 'https://api.example.com',
enableLogs: true,
theme: 'dark'
});
// Inside the plugin:
install(app, options) {
if (options.enableLogs) console.log('plugin installed');
}توسعة TypeScript
بالنسبة إلى globalProperties أو مساعدات الحقن، وسّع أنواع Vue حتى يحصل المستهلكون على الإكمال التلقائي.
// types.d.ts
declare module '@vue/runtime-core' {
interface ComponentCustomProperties {
$api: ApiClient;
}
}
// In plugin:
install(app) {
app.config.globalProperties.$api = new ApiClient();
}globalProperties — نمط قديم
يعرّض app.config.globalProperties.$foo قيمةً باسم this.$foo في مكونات Options API وقوالبها. وتفضّل Composition API استخدام inject().
التثبيت المتكرر بأمان
لا تتسبب في تعطل التطبيق عند التثبيت مرتين، بل تحقّق من وجود علامة أو استخدم مفاتيح provide المستندة إلى Symbol، التي تمنع التكرار طبيعيًا.
كتابة مكوّنك الإضافي
إذا أعادت عدة تطبيقات استخدام إعداد واحد، مثل غلاف المصادقة أو إعداد القياس عن بُعد أو رموز التصميم، فاجمعها في مكوّن إضافي. ويُعد نشره إلى npm باستخدام توقيع نظيف لـ install(app, options) الطريقة المتوافقة مع أسلوب Vue لشحن وظائف قابلة لإعادة الاستخدام.
تحقق سريع
ما الأسلوب الذي تستدعيه على مثيل تطبيق Vue لتثبيت مكوّن إضافي؟
مراجعة: مكونات Vue الإضافية
المكوّن الإضافي = كائن يحتوي على install(app, options). ثبّته عبر app.use(plugin, options). استخدمه لتسجيل المكونات والتوجيهات العالمية، وتوفير القيم، وتهيئة المكتبات. Pinia وVue Router وi18n كلها مكونات إضافية. وسّع ComponentCustomProperties للخصائص مسبوقة بـ $. واحرص على أن يكون install آمنًا عند تكرار التثبيت.
تعلم HTML مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 41
- الدروس
- 163
الأسئلة الشائعة
هل درس «نظام الإضافات: app.use()» مجاني؟
نعم — نص درس «نظام الإضافات: app.use()» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Frontend Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Frontend Academy 4 دروس في المجموع.
ماذا ستتعلم في «نظام الإضافات: app.use()»؟
أنشئ إضافة Vue باعتبارها كائنًا يحوي method باسم install، وسجّل المكوّنات والتوجيهات العامة، ووفّر القيم للتطبيق بأكمله تتمرن على Frontend Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Frontend Academy؟
لا تُشترط خبرة سابقة. Frontend Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «نظام الإضافات: app.use()»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Frontend Academy هذا؟
نعم. كل درس في Frontend Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- provide() وinject() لحقن الاعتماديات
- المكوّنات غير المتزامنة وSuspense
- التوجيهات المخصّصة
- نظام الإضافات: app.use()