0Pricing
Frontend Academy · Урок

Система плагинов: app.use()

Создайте плагин Vue в виде объекта с методом install, зарегистрируйте глобальные компоненты и директивы и предоставьте значения всему приложению

«Система плагинов: app.use()» — бесплатный урок Frontend Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Frontend Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Frontend Academy содержит 4 уроков всего.

Что такое плагин Vue

Плагин — это повторно используемая функциональность, которую устанавливают в приложение Vue: глобальные компоненты и директивы, предоставление значений, вспомогательные функции в стиле прототипа — 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()

Предоставляйте значения для всего приложения, которые любой компонент сможет получить через inject, — это часто используется для клиентов 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 для свойств с префиксом $. Делайте установку идемпотентной.

Часто задаваемые вопросы

Урок «Система плагинов: app.use()» бесплатный?

Да — полный текст урока «Система плагинов: app.use()» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Frontend Academy, подпишись на CoddyKit PRO. Курс Frontend Academy содержит 4 уроков всего.

Чему я научусь в уроке «Система плагинов: app.use()»?

Создайте плагин Vue в виде объекта с методом install, зарегистрируйте глобальные компоненты и директивы и предоставьте значения всему приложению Ты практикуешь Frontend Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Frontend Academy?

Предыдущий опыт не требуется. Frontend Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Система плагинов: app.use()»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Frontend Academy?

Да. Каждый урок Frontend Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. provide() и inject() для внедрения зависимостей
  2. Асинхронные компоненты и Suspense
  3. Пользовательские директивы
  4. Система плагинов: app.use()
← Назад к Frontend Academy