vue插件介绍

2019-10-09  本文已影响0人  手指乐

用一句话简单概括两者的关系就是:插件可以封装组件,组件可以暴露数据给插件。

<template>
  <div id="app">
    <input type="button" @click="buy" value="保存">
    <alert v-model="is_alert" 
           title="商城提醒你:" 
           :content="alertContent"
           @on-hide="hide"
           >
    </alert>
  </div>
</template>

<style>
    
</style>
    
<script>
import {Alert} from 'vux';
export default {
  components: {
    Alert
  },
  data(){
      return {
          is_alert: false,
          alertContent: ""
      }
  },
  methods: {
      hide() {
          alert('弹窗关闭了!');
      },
      buy() {
          //alert("fdsf")
          // 当点击购买时,将弹出框的显示值设置为 true
          this.is_alert = true
          this.alertContent = '保存成功!'
      }      
  }
}
</script>

如果使用插件,这样即可:
https://www.cnblogs.com/cowboybusy/p/11026793.html

import ToastComponent from './toast.vue'

const Toast = {};

// 注册Toast
Toast.install = function (Vue) {
    // 生成一个Vue的子类
    // 同时这个子类也就是组件
    const ToastConstructor = Vue.extend(ToastComponent)
    // 生成一个该子类的实例
    const instance = new ToastConstructor();

    // 将这个实例挂载在我创建的div上
    // 并将此div加入全局挂载点内部
    instance.$mount(document.createElement('div'))
    document.body.appendChild(instance.$el)
    
    // 通过Vue的原型注册一个方法
    // 让所有实例共享这个方法 
    Vue.prototype.$toast = (msg, duration = 2000) => {
        instance.message = msg;
        instance.show = true;

        setTimeout(() => {
            
            instance.show = false;
        }, duration);
    }
}

export default Toast

Vue.use注册插件(对应Vue.componet注册组件),调用插件里的install方法,上例中insall方法里的
Vue.prototype.toast 让每个vue组件有了一个toast属性(此处$toast属性是方法),就可以这样调用:

methods: {
    toast() {
      this.$toast("你好");
    }
  }

vux里面使用插件的方式也跟这个类似

上一篇 下一篇

猜你喜欢

热点阅读