Plug-in


Verzeichnis


Plug-Ins sind normalerweise gewohnt Vue fügt globale Funktionalität hinzu. Es gibt keine strengen Einschränkungen hinsichtlich des Funktionsumfangs von Plug-Ins – grundsätzlich gibt es folgende Typen:

1. Globale Methoden oder Attribute hinzufügen. Zum Beispiel: vue-custom-element

 2. Fügen Sie globale Ressourcen hinzu: Anweisungen/Filter/Übergänge usw. Wie zum Beispiel vue-touch

 3. Fügen Sie einige Komponentenoptionen durch globales Mischen hinzu. Wie zum Beispiel vue-router

 4. Fügen Sie Vue-Instanzmethoden hinzu, indem Sie sie zu Vue.prototype hinzufügen.

 5. Eine Bibliothek, die ihre eigene API und eine oder mehrere der oben genannten Funktionen bereitstellt. Beispielsweise verwendet vue-router


das Plugin


über die globale Methode Vue.use() Plugin verwenden. Es muss abgeschlossen sein, bevor Sie new Vue() aufrufen, um die Anwendung zu starten:

// 调用 `MyPlugin.install(Vue)`
Vue.use(MyPlugin)
new Vue({
  // ...组件选项
})

Sie können auch ein optionales Optionsobjekt übergeben:

Vue.use(MyPlugin, { someOption: true })

Vue.use verhindert automatisch die Mehrfachregistrierung des Zu diesem Zeitpunkt wird das Plug-in nur einmal registriert, auch wenn es mehrmals aufgerufen wird.

Einige offiziell von Vue.js bereitgestellte Plug-Ins (z. B. vue-router) rufen automatisch Vue.use() auf, wenn sie erkennen, dass Vue eine zugängliche globale Variable ist. Allerdings sollten Sie in einer Modulumgebung wie CommonJS immer Vue.use() explizit aufrufen:

// 用 Browserify 或 webpack 提供的 CommonJS 模块环境时
var Vue = require('vue')
var VueRouter = require('vue-router')

// 不要忘了调用此方法
Vue.use(VueRouter)

awesome-vue ist eine Sammlung einer großen Sammlung von von der Community beigesteuerten Plugins und Bibliotheken.


Plugins entwickeln


Vue.js-Plugins sollten eine install-Methode verfügbar machen. Der erste Parameter dieser Methode ist der Konstruktor Vue und der zweite Parameter ist ein optionales Optionsobjekt:

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) {
    // 逻辑...
  }
}