博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vue loading 插件编写与实战
阅读量:6680 次
发布时间:2019-06-25

本文共 2185 字,大约阅读时间需要 7 分钟。

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

  vue插件的编写方法一般分为4类,如上图所示。主要注册与绑定机制如下:

export default {    install(Vue, options) {        Vue.myGlobalMethod = function () {  // 1. 添加全局方法或属性,如:  vue-custom-element            // 逻辑...        }        Vue.directive('my-directive', {  // 2. 添加全局资源:指令/过滤器/过渡等,如 vue-touch            bind (el, binding, vnode, oldVnode) {                // 逻辑...            }            ...        })        Vue.mixin({            created: function () {  // 3. 通过全局 mixin方法添加一些组件选项,如: vuex                // 逻辑...            }            ...        })            Vue.prototype.$myMethod = function (options) {  // 4. 添加实例方法,通过把它们添加到 Vue.prototype 上实现            // 逻辑...        }    }}

  实战:loading

//loading.vue 

下面我们便来封装一下该组件:

// loading.jsimport LoadingComponent from './components/loading.vue'let $vmexport default {    install(Vue, options) {        if (!$vm) {            const LoadingPlugin = Vue.extend(LoadingComponent);            $vm = new LoadingPlugin({                el: document.createElement('div')            });            document.body.appendChild($vm.$el);        }        $vm.show = false;        let loading = {            show(text) {                $vm.show = true;                $vm.text = text;            },            hide() {                $vm.show = false;            }        };        if (!Vue.$loading) {            Vue.$loading = loading;        }        // Vue.prototype.$loading = Vue.$loading;        Vue.mixin({            created() {                this.$loading = Vue.$loading;            }        })    }}

  目录结构:

 

  首页:this.$loading.show('')       this.$loading.hide()

created () {
  this.$loading.
show(
'')
    axios.
get(url.getIconList).
then(
res
=> {
      if (res.status
===
200) {
        this.iconList
= res.data.iconlist
        this.$loading.
hide()
      }
    }).
catch(
error
=> {
      console.
log(error)
    })
}

转载于:https://www.cnblogs.com/sunjuncoder/p/9900079.html

你可能感兴趣的文章
【python 文件操作】python 文件操作
查看>>
线程相关
查看>>
【C语言】20-static和extern关键字2-对变量的作用
查看>>
详解JDBC驱动的四种类型
查看>>
第十一次作业
查看>>
Android 中Webview 自适应屏幕
查看>>
ubuntu 为rabbitmq安装web插件管理界面(为了远程查看rabbitmq) 分类...
查看>>
js面试题1
查看>>
阿铭每日一题 day 4 20180114
查看>>
转载:C#中的泛型
查看>>
1.4 注册系统的逻辑与结构
查看>>
NOIP模拟2017.6.11解题报告
查看>>
洛谷 P1464 Function【动态规划(递推)/记忆化搜索(递归)】
查看>>
Python-Django 视图层
查看>>
uC/OS-II中includes块
查看>>
公共DNS推荐及dns测速
查看>>
查询获取所有数据库名及数据库中表的集合、数据库连接字符串(类生成器,暂时支持mysql,sql server,后期有oracle再更新)...
查看>>
Scramble String
查看>>
Linux基础:CentOS安装python3.7
查看>>
Daily Scrum: 2012/11/27
查看>>