美文网首页
vue插件学习 - Loading插件开发

vue插件学习 - Loading插件开发

作者: FE小帅 | 来源:发表于2018-08-24 13:54 被阅读0次

什么是vue插件

  • 插件需要一个install方法,用于在初始化时候执行
  • install方法默认入参 Vue,为vue构造器
  • install方法可选入参 options,用于传入一些配置选项
  • 在install中需要创建一个示例方法,如Vue.prototype.$loading = {},$loading就是你在项目中调用的名称

创建Loading插件

基础代码

Loading插件需要两个方法,一个为显示,一个为隐藏,同时需要一段模板,代码结构如下

import loading from './loading.vue' // loading模板
    
let instance = null // 检测实例是否创建的标志位
let Loading = {}
Loading.install = (Vue) => {
  Vue.prototype.$loading = { // $loading即是你后期调用的名称
    show () {},
    hide () {}
  }
}
export default Loading

我们会在show方法中创建loading实例,并挂在到页面上,通过instance进行记录。在hide方法时,判断是否存在,如存在,则销毁

实现loading.vue

设置过度动画,根据show值的变化,调用destroy方法

<transition name="fade" appear @afterLeave="destroy">
  <div class="loading-container" v-if="show">
    <!-- ... -->
  </div>
</transition>

loadingClass为不同的loading样式,show控制显隐。根据上面hook,在show为false时候,会直接销毁该实例

export default {
  data () {
    return {
      show: true,
      loadingClass: ''
    }
  },
  methods: {
    destroy () {
      this.$el.remove()
      this.$destroy()
    }
  }
}

实现show和hide方法

根据需求,show方法中,根据判断条件,展示不用的loading样式

show () {
  const Loading = Vue.extend(loading) // 扩展vue实例,引入loading
  // TODO 判断条件,传输不同的配置数据
  const initObj = {
    data: {loadingClass: 'xxx'}
  }
  const root = document.getElementById('App')
  instance = new Loading(initObj).$mount() // 创建loading实例并挂载
  root.appendChild(instance.$el) // 向指定目录添加dom
},
hidden () {
  // 只有实例存在,才会隐藏
  if (!instance) return
  instance.show = false
}

使用方法

import Loading from './loading'
Vue.use(Loading)
// 调用$loading
that.$loading.show()
that.$loading.hide()

不按套路,直接引入组件

上面的Loading.install方法,最终是在Vue.prototype上扩展了$loading方法,那么我们可以不用写默认的install方法,直接扩展即可,代码如下

import loading from './loading.vue'
let instance = null
export default function (Vue) {
  Object.defineProperty(Vue.prototype, '$loading', {
    value: {
      show () {
        // 代码如上
      },
      hidden () {
        // 代码如上
      }
    }
  })
}

参考资料

相关文章

  • vue插件学习 - Loading插件开发

    什么是vue插件 插件需要一个install方法,用于在初始化时候执行 install方法默认入参 Vue,为vu...

  • vue 在线预览pdf

    vue 在线预览pdf 使用了vue-pdf插件,页面初始的loading使用了vant UI 的loading。

  • 从零开始的vue插件封装

    vue插件的封装方法。 插件开发 详情:插件开发 插件通常会为 Vue 添加全局功能。插件的范围没有限制——一般有...

  • plugin插件

    插件通常用来为 Vue 添加全局功能。 直接使用别人开发好的插件:Vue.use() 自己开发插件: Vue.js...

  • Vue(一、插件开发)

    一、插件开发 开发插件 Vue.js 的插件应当有一个公开方法 install 。这个方法的第一个参数是 Vue ...

  • vuecli3插件制作并发布

    参考文章:Vue cli3 插件开发并发布vue-cli 3.x 开发插件并发布 1、利用vuecli3新建vue...

  • vue3.x全局$toast、$message、$loading

    有时候我们需要使用一些类似toast,messge、loading这些跟js交互很频繁的插件,vue3.x这类插件...

  • vue封装插件(loading)

    第一步:创建loading.vue文件 export...

  • 如何开发和发布一个Vue插件

    Vue 项目开发过程中,经常用到插件,比如原生插件 vue-router 、 vuex ,还有 element-u...

  • dva-loading插件

    说明 dva-loading 插件是对异步才作用的;该插件是对reducers新增state数据(loading对...

网友评论

      本文标题:vue插件学习 - Loading插件开发

      本文链接:https://www.haomeiwen.com/subject/iacbiftx.html