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 相关文章推荐
Gird事件机制初级读本
Mar 10 Javascript
JS代码优化技巧之通俗版(减少js体积)
Dec 23 Javascript
使用javascript将时间转换成今天,昨天,前天等格式
Jun 25 Javascript
Jquery循环截取字符串的方法(多出的字符串处理成&quot;...&quot;)
Nov 28 Javascript
基于Three.js插件制作360度全景图
Nov 29 Javascript
jQuery仿IOS弹出框插件
Feb 18 Javascript
js 奇葩技巧之隐藏代码
Aug 11 Javascript
AngularJS使用ng-repeat遍历二维数组元素的方法详解
Nov 11 Javascript
@angular前端项目代码优化之构建Api Tree的方法
Dec 24 Javascript
微信小程序实现炫酷的弹出式菜单特效
Jan 28 Javascript
vue.js实现数据库的JSON数据输出渲染到html页面功能示例
Aug 03 Javascript
关于element-ui表单中限制输入纯数字的解决方式
Sep 08 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
深入理解PHP原理之Session Gc的一个小概率Notice
2011/04/12 PHP
浅析memcache启动以及telnet命令详解
2013/06/28 PHP
php实现斐波那契数列的简单写法
2014/07/19 PHP
php通过记录IP来防止表单重复提交方法分析
2014/12/16 PHP
jQuery 动态酷效果实现总结
2009/12/27 Javascript
JavaScript回调(callback)函数概念自我理解及示例
2013/07/04 Javascript
jQuery的观察者模式详解
2014/12/22 Javascript
jQuery检测返回值的数据类型
2015/07/13 Javascript
js轮播图代码分享
2016/07/14 Javascript
vue.js实现表格合并示例代码
2016/11/30 Javascript
基于angular实现三级联动的生日插件
2017/05/12 Javascript
vue.js添加一些触摸事件以及安装fastclick的实例
2018/08/28 Javascript
vue实现弹框遮罩点击其他区域弹框关闭及v-if与v-show的区别介绍
2018/09/29 Javascript
vue中$nextTick的用法讲解
2019/01/17 Javascript
Nuxt pages下不同的页面对应layout下的页面布局操作
2020/11/05 Javascript
关于Js中new操作符的作用详解
2021/02/21 Javascript
[42:24]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第一场 11.01
2020/11/02 DOTA
Python fileinput模块使用实例
2015/06/03 Python
使用python调用zxing库生成二维码图片详解
2017/01/10 Python
Python开发中爬虫使用代理proxy抓取网页的方法示例
2017/09/26 Python
python 实现将txt文件多行合并为一行并将中间的空格去掉方法
2018/12/20 Python
Django使用unittest模块进行单元测试过程解析
2019/08/02 Python
Python autoescape标签用法解析
2020/01/17 Python
浅谈tensorflow中张量的提取值和赋值
2020/01/19 Python
AmazeUI底部导航栏与分享按钮的示例代码
2020/08/18 HTML / CSS
英国领先的维生素和营养补充剂直接供应商:Healthspan
2019/04/22 全球购物
洲际酒店集团英国官网:IHG英国
2019/07/10 全球购物
巾帼建功标兵事迹材料
2014/05/11 职场文书
教育局党的群众路线教育实践活动整改方案
2014/09/20 职场文书
个人批评与自我批评发言稿
2014/09/28 职场文书
党的群众路线教育实践活动心得体会(医院)
2014/11/03 职场文书
高三英语复习计划
2015/01/19 职场文书
在人间读书笔记
2015/06/30 职场文书
2019财务转正述职报告
2019/06/27 职场文书
如何理解Vue简单状态管理之store模式
2021/05/15 Vue.js
Java spring单点登录系统
2021/09/04 Java/Android