14.Vue插件

功能: 用于增强Vue

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

定义插件:

​ 对象.install = function (Vue,options){

​ //1. 添加一个全局过滤器

​ Vue.filter(...)

​ //2. 添加全局指令

​ Vue.directive(...)

​ //3. 配置全局混入(合)

​ Vue.mixin(...)

​ //4. 添加实例方法

​ Vue.prototype.$myMethod=function(){...}

​ Vue.prototype.$myProperty=xxxx

​ }

使用插件: Vue.use(xxx)

plugins.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;
            },
            //指令所在元素被插入页面时
            inserted(element, binding) {
                //自动聚焦
                element.focus()
                console.log(binding);
            },
            //指令所在的模板被重新解析时
            update(element, binding) {
                element.value = binding.value
            }
        })
        //定义混入
        Vue.mixin({
            data() {
                return {
                    x: 200,
                    y: 1000
                }
            }
        })
        //给Vue原型上添加一个方法
        Vue.prototype.hello = () => {
            alert("你好啊!!!!!")
        }
    }
}

School.vue

<template>
  <div>
    <h2>学校名称: {{ name | mySlice}}</h2>
    <h2 @click="showX">学校地址: {{ address }}</h2>
    <button @click="hello">点我测试hello方法</button>
  </div>
</template>
<script>
export default {
  name: "Student",
  data() {
    return {
      name: "广东南方IT-NFIT",
      address: '广东'
    }
  },
  methods:{
    showX(){
      alert(this.x)
      console.log(this);
    }
  }
}
</script>
<style scoped>
</style>

Student.vue

<template>
  <div>
    <h2>学生姓名: {{ name }}</h2>
    <h2>学生性别: {{ sex }}</h2>
    <input type="text" v-fbind="name">
  </div>
</template>
<script>
export default {
  name: "Student",
  data() {
    return {
      name: "呓语",
      sex: '男',
    }
  },
}
</script>
<style scoped>
</style>

main.js

//引入Vue
import Vue from 'vue'
//引入App组件
import App from './App'
//关闭Vue的生产提示
Vue.config.productionTip=false

//引入插件
import plugins from './plugins'
//使用插件
Vue.use(plugins)

new Vue({
    el:"#app",
    render:h=>h(App)
})
最后修改:2023 年 01 月 31 日
如果觉得我的文章对你有用,请随意赞赏