Система плагинов: 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 — локальная установка не требуется.
Все уроки этого курса
- provide() и inject() для внедрения зависимостей
- Асинхронные компоненты и Suspense
- Пользовательские директивы
- Система плагинов: app.use()