vue 页面加载进度条组件实例


Posted in Javascript onFebruary 05, 2018

页面加载进度条最初我是在youtube上看到的,后面几乎在各大网站上都能见到它的身影,可以让用户在加载页面的时候不会对着完全空白的页面发呆,提升用户体验

但是从开发角度讲,这种进度条在真实性上确实很难把握,因为在逻辑代码加载完成之前,我们都不能统计到进度,而逻辑代码自身的进度也无法统计。另外,我们不可能监控到所有资源的加载情况。

事实上,用户并不是在乎你的页面究竟加载了百分之几,而真正关心的是离加载完还有多久,以及这个空白页面是没有加载完,还是加载完就是空白的。所以没我们需要去“模拟”一个进度条,在后端数据返回前利用一个假的动画效果模拟加载,在数据返回后读完进度条并且隐藏。

// progress-bar.vue
<template>
 <transition name="fade">
 <div class="progress-bar" v-if="isShow">
 </div>
 </transition>
</template>

<script type="text/babel">
 export default {
 data() {
  return {
  isShow: true, // 是否显示进度条
  val: 0, // 进度
  }
 },
 props: {
  /**
  * 每10毫秒自增幅度
  */
  step: {
  type: Number,
  default: 5,
  },
  /**
  * 初始值
  */
  initVal: {
  type: Number,
  default: 0,
  },
  /**
  * 到一定进度停止
  */
  stopVal: {
  type: Number,
  default: 80,
  },
  /**
  * 进度条继续到成功
  */
  isOk: {
  type: Boolean,
  default: false,
  },
 },
 mounted() {
  // 初始化后加载进度,加载到百分之多少由stopVal决定
  this.val = this.initVal
  let step = this.step
  let timer = setInterval(() => {
  this.val = this.val + step
  this.$el.style.width = this.val + '%'
  // 父组件数据加载完前进度条最多到stopVal的这个百分值
  if (this.val >= this.stopVal) {
   clearInterval(timer)
   return
  }
  }, 10)
 },
 watch: {
  /**
  * 监听组件props变化决定是否继续加载,一般在父组件数据加载完后改变此标志位
  */
  isOk() {
  let val = this.val
  let step = this.step
  let timer = setInterval(() => {
   val = val + step
   this.$el.style.width = val + '%'
   // 加载到百分百完成
   if (val >= 100) {
   // 关闭定时器
   clearInterval(timer)
   // 加载完成关闭进度条
   this.isShow = false
   // 加载完成的回调
   this.$emit('callback', 'load success')
   return
   }
  }, 10)
  },
 },
 }
</script>

<style lang="stylus" rel="stylesheet/stylus">
 .progress-bar {
 position fixed
 top 0
 height 6px
 width 0
 background-color #999
 }
 .fade {
 &-enter-active, &-leave-active {
  transition: all .3s
 }
 &-enter, &-leave-active {
  opacity: 0
 }
 }
</style>

以上这篇vue 页面加载进度条组件实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
利用javascript数组长度循环数组内所有元素
Dec 27 Javascript
jquery实现的美女拼图游戏实例
May 04 Javascript
简述AngularJS的控制器的使用
Jun 16 Javascript
javascript中 try catch用法
Aug 16 Javascript
基于Jquery实现万圣节快乐特效
Nov 01 Javascript
jquery正则表达式验证(手机号、身份证号、中文名称)
Dec 31 Javascript
jquery限定文本框只能输入数字(整数和小数)
Jan 08 Javascript
JS中正则表达式全局匹配模式 /g用法详解
Apr 01 Javascript
webpack4+Vue搭建自己的Vue-cli项目过程分享
Aug 29 Javascript
详解jQuery获取特殊属性的值以及设置内容
Nov 14 jQuery
js中调用微信的扫描二维码功能的实现代码
Apr 11 Javascript
浅谈vue中$bus的使用和涉及到的问题
Jul 28 Javascript
JS设计模式之状态模式概念与用法分析
Feb 05 #Javascript
javascript实现获取一个日期段内每天不同的价格(计算入住总价格)
Feb 05 #Javascript
vue实现图片加载完成前的loading组件方法
Feb 05 #Javascript
JS设计模式之策略模式概念与用法分析
Feb 05 #Javascript
Node.js成为Web应用开发最佳选择的原因
Feb 05 #Javascript
Node.js上传文件功能之服务端如何获取文件上传进度
Feb 05 #Javascript
javascript实现最长公共子序列实例代码
Feb 05 #Javascript
You might like
simplehtmldom Doc api帮助文档
2012/03/26 PHP
PHP设计模式之调解者模式的深入解析
2013/06/13 PHP
javascript 动态table添加colspan\rowspan 参数的方法
2009/07/25 Javascript
Google 静态地图API实现代码
2010/11/19 Javascript
javascript中的继承实例代码
2011/04/27 Javascript
jQuery动画animate方法使用介绍
2013/05/06 Javascript
JS自动适应的图片弹窗实例
2013/06/29 Javascript
使用jquery组件qrcode生成二维码及应用指南
2015/02/22 Javascript
jQuery数据类型小结(14个)
2016/01/08 Javascript
Javascript如何判断数据类型和数组类型
2016/06/22 Javascript
javascript 判断页面访问方式电脑或者移动端
2016/09/19 Javascript
浅谈js算法和流程控制
2016/12/29 Javascript
Bootstrap table简单使用总结
2017/02/15 Javascript
讲解vue-router之什么是编程式路由
2018/05/28 Javascript
Vue唯一可以更改vuex实例中state数据状态的属性对象Mutation的讲解
2019/01/18 Javascript
JavaScript中交换值的10种方法总结
2020/08/18 Javascript
python正则表达式re模块详解
2014/06/25 Python
Python创建系统目录的方法
2015/03/11 Python
Python字符串格式化的方法(两种)
2017/09/19 Python
python编程使用协程并发的优缺点
2018/09/20 Python
Python骚操作之动态定义函数
2019/03/26 Python
Python实现定时执行任务的三种方式简单示例
2019/03/30 Python
Python TestCase中的断言方法介绍
2019/05/02 Python
Python递归求出列表(包括列表中的子列表)的最大值实例
2020/02/27 Python
Python读取文件内容为字符串的方法(多种方法详解)
2020/03/04 Python
Python切割图片成九宫格的示例代码
2020/03/10 Python
python db类用法说明
2020/07/07 Python
python将数据插入数据库的代码分享
2020/08/16 Python
施工质量承诺书范文
2014/05/30 职场文书
个人求职自荐信范文
2014/06/20 职场文书
社团个人总结范文
2015/03/05 职场文书
民事申诉状范本
2015/05/20 职场文书
运动会开幕式通讯稿
2015/07/18 职场文书
如何做好工作总结!
2019/04/10 职场文书
Django实现在线无水印抖音视频下载(附源码及地址)
2021/05/06 Python
Mysql分库分表之后主键处理的几种方法
2022/02/15 MySQL