Vue的plugin属性

功能:用于增强Vue
本质: 包含install方法的一个对象,install的第一个参数是Vue, 第二个以后得参数是插件使用者传递的数据。

1. 插件使用步骤

1.1 定义插件

js
对象.install = function(Vue, options){  //定义对象的install方法
    // 1. 添加全局过滤器
    Vue.filter(...)
    // 2. 添加全局指令
    Vue.directive(...)
    // 3. 配置全局混入(合)
    Vue.mixin(...)
    // 4. 添加实例方法
    Vue.prototype.$myMethod = function() {...}
    Vue.prototype.$myProperty = xxx
}

1.2 使用插件

使用插件: Vue.use() 其中Vue.use()还可以传递参数,比如Vue.use(plugins, a,b, c)

js
// 引入vue

import Vue from 'vue'

// 引入App组件,它是所有组件的父组件

import App from './App.vue'

// 关闭vue的生产提示

Vue.config.productionTip = false



import plugins from "@/plugins";

Vue.use(plugins)



// 创建vm实例对象

new Vue({

  // 将App组件放到容器中

  render: q => q(App)

}).$mount('#app')
js
export default {

    install(Vue) {

        // 全局过滤器

        Vue.filter('mySlice', function (value) {

            return value.slice(0, 4)

        })



        Vue.directive('fbind', {

            // 指令与元素成功绑定时(一上来)

            bind(element, binding) {

                element.value = binding.value

            },

            // 指令所在元素插入页面时候

            // eslint-disable-next-line no-unused-vars

            inserted(element, binding){

                element.focus()

            },

            // 指令所在元素被重新解析时

            update(element, binding){

                element.value = binding.value

            }

        })



        Vue.mixin({

            data(){

                return {

                    a: 100

                }

            }

        })



        // Vue原型上添加方法

        Vue.prototype.hello = () =>{ alert('你好啊!')}

    }

}
运行效果: ![Alt text](/web/vue/images/1708656307495.jpg)

评论