首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

17. Plugins(插件)

编写一个插件

插件通常用于为 Vue 添加全局级别的功能。插件范围没有的严格定义 - 通常有几种类型的插件可以编写:

1. 添加一些全局方法或属性。例如 vue-custom-element

添加一个或多个全局资源(asset):指令(directives)/过滤器(filters)/过渡(transitions) 等。例如 vue-touch

3. 全局混合添加一些组件选项。例如vue-router

4. 通过将Vue实例方法附加到Vue.prototype来添加一些Vue实例方法。

5. 提供自己的API的库,同时注入上述的一些组合。例如vue-router

Vue.js插件应该公开一个install方法。该方法将以Vue构造函数作为第一个参数以及可能的选项进行调用:

代码语言:javascript
复制
MyPlugin.install = function (Vue, options) {
  // 1. add global method or property
  Vue.myGlobalMethod = function () {
    // something logic ...
  }

  // 2. add a global asset
  Vue.directive('my-directive', {
    bind (el, binding, vnode, oldVnode) {
      // something logic ...
    }
    ...
  })

  // 3. inject some component options
  Vue.mixin({
    created: function () {
      // something logic ...
    }
    ...
  })

  // 4. add an instance method
  Vue.prototype.$myMethod = function (methodOptions) {
    // something logic ...
  }
}

使用插件

通过调用Vue.use()全局方法来使用插件:

代码语言:javascript
复制
// calls `MyPlugin.install(Vue)`
Vue.use(MyPlugin)

您可以选择传递一些选项:

代码语言:javascript
复制
Vue.use(MyPlugin, { someOption: true })

Vue.use 会自动阻止你多次使用同一个插件,所以在同一个插件上多次调用它只会安装一次插件。

Vue.js官方插件提供的一些插件,如vue-router自动调用Vue.use()是否 Vue可用作全局变量。但是在像CommonJS这样的模块环境中,你总是需要Vue.use()明确地调用:

代码语言:javascript
复制
// When using CommonJS via Browserify or Webpack
var Vue = require('vue')
var VueRouter = require('vue-router')

// Don't forget to call this
Vue.use(VueRouter)

Checkout awesome-vue为大量社区贡献的插件和库提供支持。

扫码关注腾讯云开发者

领取腾讯云代金券