Vue.js 的插件是对 Vue 自身功能的扩展。它包含以下几种:
- 添加全局方法或属性,如:vue-custom-element
- 添加全局资源:指令/过滤器/过渡等,如:vue-touch
- 通过全局 mixin 方法添加一些组件选项,如: vue-router
- 添加 Vue 实例方法,通过把它们添加到 Vue.prototype 上实现。
- 一个库,提供自己的 API,同时提供上面提到的一个或多个功能,如:vue-axios
创建 Vue.js 插件的示例代码:
js
// vue-demo-plugin.js
(function () {
// 1. 添加全局方法或属性
Vue.myGlobalMethod = function () { ... }
Vue.myProperty = 'value'
// 2. 添加全局资源
Vue.directive('demo', { ... })
// 3. 添加全局 mixin
Vue.mixin({
methods: { ... }
})
// 4. 添加实例方法
Vue.prototype.$demo = function (name) { ... }
// 5. 深入修改 Vue 实例
Vue.config.optionMergeStrategies.demo = function (toVal, fromVal) { ... }
})()
// 使用插件
import Vue from 'vue'
import DemoPlugin from './vue-demo-plugin'
Vue.use(DemoPlugin)
new Vue({
// ...
})
要使用这个插件,我们需要调用 Vue.use() 方法传入插件对象。这会自动对插件进行安装,并执行其 install 方法(如果有)。
install 方法会接收 Vue 作为第一个参数,并在调用 Vue.use() 的地方调用。我们可以在 install 中执行上述 1-5 的功能来对 Vue 进行扩展。
一个 Vue.js 插件的好处是可以扩展 Vue 的全局/实例功能,并且易与其他框架或库集成。但是如果过度使用插件,也会使框架本身变得松散和无序。