• vue插件介绍


    1.插件和组件的关系

    在没有封装组件之前,如果不使用第三方插件,那么很多情况下我们会编写几个常用的组件来提供给页面使用,如Alert/Loading组件,而你可能需要在很多页面中引入并且通过components注册组件,但是像这样使用率很高的组件一般我们希望全局注册后直接就可以在相应页面使用,因此我们需要将他们封装成插件,比如像vux这样的ui组件库,即提供了组件功能也提供了某些全局注册的插件。

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

    2.以vux的alert组件为例

    如果直接使用组件,要这样使用

    <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

    插件类似是这样开发的:

    toast.vue是一个toast组件,

    Toast.js是封装了这个组件的插件

    Toast.js

    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

    具体参考文章:

    https://blog.csdn.net/u012230055/article/details/82898245

    Vue.use注册插件(对应Vue.componet注册组件),调用插件里的install方法,上例中insall方法里的
    Vue.prototype.$toast
     
    让每个vue组件有了一个$toast属性(此处$toast属性是方法),就可以这样调用:
    methods: {
        toast() {
          this.$toast("你好");
        }
      }
    vux里面使用插件的方式也跟这个类似 
     
     
     
     
     
     
  • 相关阅读:
    VS2010工具箱中的控件突然全部都不见了的问题解决
    wpf用户控件 弹出窗口因主窗体最小化而消失的问题
    未解析成员Csla.Security.UnauthenticatedPrincipal,Csla,异常
    服务器被入侵,管理员账号密码被改,策略以及维护
    telerik for asp 的引用问题
    decimal简单问题
    vs2008的网站升级为vs2010遇到的问题
    VS2010设置默认以管理员权限打开
    lhgdialog基础
    SQL Server 2005镜像删除备忘录
  • 原文地址:https://www.cnblogs.com/cowboybusy/p/11027943.html
Copyright © 2020-2023  润新知