Добавки позволяют добавить во Vue некоторую глобальную функциональность. Область применения добавок явно не определена. Можно разделить добавки на нескольких типов:
Добавляют глобальные методы и/или свойства, например vue-custom-element
Добавляют глобальные объекты: директивы/фильтры/переходы и т.д., например vue-touch
Добавляют настройки компонентам через глобальную примесь, например vue-router
Добавляют методы экземпляра Vue через Vue.prototype.
Библиотеки, предоставляющие собственные API и комбинирующие вышеперечисленные возможности, например vue-router
Для использования добавки необходимо вызвать глобальный метод Vue.use()
. Его нужно вызывать перед new Vue()
:
// вызывает `MyPlugin.install(Vue)`
Vue.use(MyPlugin)
new Vue({
//... настройки
})
Можно передавать дополнительные параметры в добавку:
Vue.use(MyPlugin, { someOption: true })
Vue.use
автоматически предотвращает многократную регистрацию добавки. Несколько вызовов Vue.use
для одной добавки установит его лишь один раз.
Некоторые официальные добавки Vue.js, такие как vue-router
, автоматически вызывают Vue.use()
, если обнаружат глобальную переменную Vue
. Однако при использовании инструментов модульного окружения, например CommonJS, необходимо всегда вызывать Vue.use()
явно:
// При использовании CommonJS посредством Browserify или Webpack
var Vue = require('vue')
var VueRouter = require('vue-router')
// Не забудьте этот вызов!
Vue.use(VueRouter)
Обратите внимание на awesome-vue — огромную коллекцию добавок и библиотек от сообщества Vue.
Добавка Vue.js должен содержать метод install
. Этот метод будет вызываться с конструктором Vue
в качестве первого аргумента, и с дополнительными настройками добавки в качестве второго (если передавались):
MyPlugin.install = function (Vue, options) {
// 1. добавление глобального метода или свойства
Vue.myGlobalMethod = function () {
// некоторая логика ...
}
// 2. добавление глобального объекта
Vue.directive('my-directive', {
bind (el, binding, vnode, oldVnode) {
// некоторая логика ...
}
...
})
// 3. добавление настроек компонентов
Vue.mixin({
created: function () {
// некоторая логика ...
}
...
})
// 4. добавление метода экземпляра
Vue.prototype.$myMethod = function (methodOptions) {
// некоторая логика ...
}
}