Создание плагина

Плагины обычно добавляют во Vue некоторой глобальной функциональностью. В явном виде область применения плагинов не определена. Вы можете создавать плагины нескольких различных типов:

  1. Добавляющие глобальные методы и/или свойства, например vue-custom-element
  2. Добавляющие глобальные объекты: директивы/фильтры/переходы и т.д., например vue-touch
  3. Добавляющие опции компонентов посредством глобальной примеси, например vue-router
  4. Добавляющие методы экземпляра Vue через Vue.prototype.
  5. Библиотеки, предоставляющие собственные API, комбинируя вышеперечисленные возможности, например Vue-router

Плагин 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) {
    // некоторая логика ...
  }
}

Использование плагинов

Для использования плагина нужно вызвать глобальный метод Vue.use():

// вызывает `MyPlugin.install(Vue)`
Vue.use(MyPlugin)

При установке плагина можно передать дополнительные параметры:

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.