【Vue笔记】Vue入门简介_插件(20)

Page content

这一篇整理了组件相关的内容。

插件

功能:用于增强 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 = xxx
}

使用插件:​​Vue.use()​​
我们着手写一个插件,跟 main.js 同级,新增一个 plugins.js

//完整写法
/*
const obj = {
    install(){
        console.log("install");
    }
}

export default obj*/
//简写
export default {
    install(Vue,x,y) {
        console.log(x,y)
        //全局过滤器
        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("hello")}
    }
}

然后在 main.js 中使用插件

//引入Vue
import Vue from 'vue';
//引入App
import App from './App';
//引入插件
import plugins from "@/plugins";
//关闭vue的生产提示
Vue.config.productionTip = false
//使用插件
//Vue.use(plugins)
//使用插件 并传参数
Vue.use(plugins,1,2)
//创建vm
new Vue({
    el: "#app",
    render: h => h(App)
})

在 Student.vue 中测试

<template>
  <div>
    <h2>学生姓名{{ name|mySlice }}</h2>
    <h2>学生性别{{ sex }}</h2>
    <input type="text" v-fbind:value="name"><br><br>
    <button @click="test">点我测试 hello 方法</button>
  </div>
</template>

<script>
export default {
  name: "Student",
  data() {
    return {
      name: "张三12345",
      sex: "男",
    }
  },
  methods: {
    test() {
      this.hello()
    }
  }
}
</script>

//scoped 是这个样式之应用到这个组件的局部样式
<style scoped>
</style>

欢迎大家的意见和交流

email: li_mingxie@163.com