编写 vue 插件

loadingPlugin.js

import Loading from './Loading.vue'

let $vm

export default {
    // 核心: Vue.js 的插件应该暴露一个 install 方法。
    // 这个方法的第一个参数是 Vue 构造器,第二个参数是一个可选的选项对象:
    install(Vue, options) {

        // Vue.use(plagin, options)
        console.log('LoadingPlugin options..........', options);
        if (!$vm) {
            // Vue.extend(Loading) 创建一个“子类”。
            const LoadingPlugin = Vue.extend(Loading);
            // 挂载loading组件实例
            $vm = new LoadingPlugin({
                el: document.createElement('div')
            });
            // 将loading组件追加到页面上
            document.body.appendChild($vm.$el);
        }
        $vm.show = false;
        let loading = {
            open(text) {
                $vm.show = true;
                $vm.text = text;
            },
            close() {
                $vm.show = false;
            }
        };
        if (!Vue.$loading) {
            Vue.$loading = loading;
        }

        // 全局混入的方式注入组件选项
        Vue.mixin({
            created() {
                this.$loading = Vue.$loading;
            }
        })
    }
}

Loading.vue

<template>
  <div class="loading-box" v-show="show">
    <div class="loading-content">
      <span :tip="text">正在加载中...</span>
    </div>
  </div>
</template>

main.js

import LoadingPlugin from '@/plugins/loadingPlugin.js'

Vue.use(LoadingPlugin, { loading: true })

在页面中使用

  created() {
    this.$loading.open("正在加载中...");
  },
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容