前后端相关让前端飞

vue的toast和loading组件

2019-01-06  本文已影响67人  小猿_Luck_Boy

前言

我们在项目中都会用到toast,loading加载器。特别是在进行移动端的项目开发的时候,
进行异步操作的时候去等待,在必要的时候用toast给用户提示。在app开发中,iOS有成熟的MBProgressHUD插件等等。
在web前端也有很多第三方库也提供了这些组件,比如mint-ui,element-ui等都包含这些组件,
但是存在一个缺点,当我们只需要使用toast,loading组件,并用不到其他组件的时候,我们还是需要安装整个组件库,
会导致我们依赖的第三方库增大。所以我就做了一个轻量级的toast,loading插件vue-toast-indicator。

组件的使用

导入包,全局使用

import {
    Toast,
    Indicator
} from './vue-toast-indicator'

Vue.use(Toast);
Vue.use(Indicator);

toast的使用

this.$Toast({message:"toast...",position:"bottom"})

indicator使用

// 加载
this.$Indicator({message:"加载中..."})
// 消失 
setTimeout(()=>{
   this.$Indicator.hidden();
},600);

组件的原理

封装一个vue组件,创建vue组件,然后动态插入到body节点

举个栗子:

<template>
    <div>
        hello 小猿
    </div>
</template>

<script>
    export default {
        name: 'toast',
    }
</script>
<style>

</style>

上面创建了一个最简单的vue组件

假设我们导入该组件名字是HelloWorld

// 构造组件
const HelloWorldConstructor = Vue.extend(HelloWorld);
export default {

    install(Vue,opt){
        Vue.prototype.$component = function(options = {}) {

            let parentNode = document.createElement("div");
            let instance = new ToastConstructor().$mount(parentNode);

            document.body.appendChild(instance.$el); // 动态插入

            return instance;
    }
    }
}

就是这么简单,上面用到了vue的插件,自定义vue插件需要导出一个install方法

使用就更简单了

import xxx from 'my-lib'

Vue.use(xxx);

在项目中的任意vue组件可以通过this.$component();使用了

有什么问题可以联系liuhuo132981@163.com一起学习和进步。。。

推荐文章
移动端调试神器vConsole
一名程序猿的失业之前世今生

上一篇下一篇

猜你喜欢

热点阅读