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 相关文章推荐
JQuery浮动DIV提示信息并自动隐藏的代码
Aug 29 Javascript
将string解析为json的几种方式小结
Nov 11 Javascript
javascript输出AscII码扩展集中的字符方法
Dec 26 Javascript
微信小程序 input输入框详解及简单实例
Jan 10 Javascript
微信小程序组件 marquee实例详解
Jun 23 Javascript
js装饰设计模式学习心得
Feb 17 Javascript
基于vue-cli vue-router搭建底部导航栏移动前端项目
Feb 28 Javascript
Vue SSR 组件加载问题
May 02 Javascript
JavaScript捕捉事件和阻止冒泡事件实例分析
Aug 03 Javascript
原生js实现淘宝放大镜效果
Oct 28 Javascript
从0到1搭建element后台框架优化篇(打包优化)
May 12 Javascript
微信小程序里引入SVG矢量图标的方法
Sep 20 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中计算时间差的几种方法
2009/12/31 PHP
PHP采用get获取url汉字出现乱码的解决方法
2014/11/13 PHP
PHP获取某个月最大天数(最后一天)的方法
2015/07/29 PHP
PHP7之Mongodb API使用详解
2015/12/26 PHP
PHP统计目录中文件以及目录中目录大小的方法
2016/01/09 PHP
PHP获取HTTP body内容的方法
2018/12/31 PHP
PHP终止脚本运行三种实现方法详解
2020/09/01 PHP
vs2003 js文件编码问题的解决方法
2010/03/20 Javascript
利用浏览器全屏api实现js全屏
2014/01/16 Javascript
使用POST方式弹出窗口的两种方法示例介绍
2014/01/29 Javascript
js使用Array.prototype.sort()对数组对象排序的方法
2015/01/28 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记9)
2015/12/24 Javascript
JS简单实现禁止访问某个页面的方法
2016/09/13 Javascript
javascript实现简易计算器
2017/02/01 Javascript
AngularJS学习笔记之表单验证功能实例详解
2017/07/06 Javascript
jQuery.Sumoselect插件实现下拉复选框效果
2017/11/09 jQuery
用ES6写全屏滚动插件的示例代码
2018/05/02 Javascript
vue.js编译时给生成的文件增加版本号
2018/09/17 Javascript
Vue+penlayers实现多边形绘制及展示
2020/12/24 Vue.js
Python输出由1,2,3,4组成的互不相同且无重复的三位数
2018/02/01 Python
Python TCP通信客户端服务端代码实例
2019/11/21 Python
Python openpyxl模块原理及用法解析
2020/01/19 Python
Python Serial串口基本操作(收发数据)
2020/11/06 Python
详解BeautifulSoup获取特定标签下内容的方法
2020/12/07 Python
Web前端页面跳转并取到值
2017/04/24 HTML / CSS
美国亚马逊旗下时尚女装网店:SHOPBOP(支持中文)
2020/10/17 全球购物
成人继续教育实施方案
2014/03/01 职场文书
水毁工程实施方案
2014/04/01 职场文书
我的中国梦演讲稿800字
2014/08/19 职场文书
2015届大学生就业推荐表自我评价
2014/09/27 职场文书
个人向公司借款协议书
2014/10/09 职场文书
四川省传达学习贯彻党的群众路线教育实践活动总结大会精神新闻稿
2014/10/26 职场文书
党员证明模板
2015/06/19 职场文书
工程款催款函
2015/06/24 职场文书
opencv用VS2013调试时用Image Watch插件查看图片
2021/07/26 Python
JavaScript前端面试组合函数
2022/06/21 Javascript