Skip to content

plugin 插件

插件通常用来为 Vue 添加全局功能。插件的功能范围没有严格的限制——一般有下面几种:

  1. 添加全局方法或者 property。如:vue-custom-element
  2. 添加全局资源:指令/过滤器/过渡等。如 vue-touch
  3. 通过全局混入来添加一些组件选项。如 vue-router
  4. 添加 Vue 实例方法,通过把它们添加到 Vue.prototype 上实现。
  5. 一个库,提供自己的 API,同时提供上面提到的一个或多个功能。如 vue-router

1.开发插件

Vue.js 的插件是一个对象,对象中需要有个install 方法

这个方法的第一个参数是 Vue 构造器,第二个参数是一个可选的选项对象,可接受注册插件式传过来的参数

js
export default {
  install(Vue,options){
    console.log(options)
    Vue.filter('mySlice', function(value){return value.slice(0,4)})

    //定义全局指令
    Vue.directive('fbind',{
      bind(element,binding){element.value = binding.value},
      inserted(element,binding){element.focus()},
      update(element,binding){element.value = binding.value}
    })

    //定义混入
    Vue.mixin({
      data() {return {x:100,y:200}},
    })

    //给Vue原型上添加一个方法(vm和vc就都能用了)
    Vue.prototype.hello = ()=>{alert('你好啊')}
  }
}

2.使用插件

通过全局方法 Vue.use() 使用插件。它需要在你调用 new Vue() 启动应用之前完成:

Vue.use() 的第一个参数是插件对象,第二个参数是传过去的可选参数

js
import MyPlugin from './MyPlugin'

Vue.use(MyPlugin,{})

new Vue({
  // ...组件选项
})

TIP

Vue.use 会自动阻止多次注册相同插件,届时即使多次调用也只会注册一次该插件。

MIT Licensed