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 相关文章推荐
jCallout 轻松实现气泡提示功能
Sep 22 Javascript
javascript实现checkBox的全选,反选与赋值
Mar 12 Javascript
JavaScript中使用sencha gridpanel 编辑单元格、改变单元格颜色
Nov 26 Javascript
js实现字符串和数组之间相互转换操作
Jan 12 Javascript
AngularJS实现单一页面内设置跳转路由的方法
Jun 28 Javascript
深入浅析ES6 Class 中的 super 关键字
Oct 20 Javascript
Vue自定义弹窗指令的实现代码
Aug 13 Javascript
vue-lazyload使用总结(推荐)
Nov 01 Javascript
通过图带你深入了解vue的响应式原理
Jun 21 Javascript
Vue.js自定义指令学习使用详解
Oct 19 Javascript
antd-日历组件,前后禁止选择,只能选中间一部分的实例
Oct 29 Javascript
如何在vue中使用video.js播放m3u8格式的视频
Feb 01 Vue.js
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/11/24 PHP
php实现按文件名搜索文件的远程文件查找器
2014/05/10 PHP
Zend Framework教程之路由功能Zend_Controller_Router详解
2016/03/07 PHP
PHP7匿名类的用法示例
2019/04/05 PHP
原型方法的不同写法居然会影响调试的解决方法
2007/03/08 Javascript
IE7中javascript操作CheckBox的checked=true不打勾的解决方法
2009/12/07 Javascript
JavaScript打字小游戏代码
2011/12/26 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(三)情景对话中仿打字机输出文字
2013/01/23 Javascript
用Jquery重写windows.alert方法实现思路
2013/04/03 Javascript
getJSON调用后台json数据时函数被调用两次的原因猜想
2013/09/29 Javascript
JS小游戏之宇宙战机源码详解
2014/09/25 Javascript
png在IE6 下无法透明的解决方法汇总
2015/05/21 Javascript
AngularJS使用angular-formly进行表单验证
2015/12/27 Javascript
javascript实现移动端上的触屏拖拽功能
2016/03/04 Javascript
微信小程序组件 contact-button(客服会话按钮)详解及实例代码
2017/01/10 Javascript
vue弹窗组件使用方法
2018/04/28 Javascript
深入解析Vue源码实例挂载与编译流程实现思路详解
2019/05/05 Javascript
js JSON.stringify()基础详解
2019/06/19 Javascript
JS中比较两个Object数组是否相等方法实例
2019/11/11 Javascript
Vue基本指令实例图文讲解
2021/02/25 Vue.js
Python创建文件和追加文件内容实例
2014/10/21 Python
python中requests和https使用简单示例
2018/01/18 Python
python3使用SMTP发送简单文本邮件
2018/06/19 Python
Python3 SSH远程连接服务器的方法示例
2018/12/29 Python
python3.7 使用pymssql往sqlserver插入数据的方法
2019/07/08 Python
Django项目后台不挂断运行的方法
2019/08/31 Python
Python之Numpy的超实用基础详细教程
2019/10/23 Python
解决Keras使用GPU资源耗尽的问题
2020/06/22 Python
小学生自我评价范文
2014/01/25 职场文书
工程专业求职自荐书范文
2014/02/08 职场文书
工会换届选举方案
2014/05/21 职场文书
政风行风建设责任书
2014/07/23 职场文书
2014年社团工作总结范文
2014/11/27 职场文书
学习经验交流会演讲稿
2015/11/02 职场文书
小学教师师德培训心得体会
2016/01/09 职场文书
Python Pandas数据分析之iloc和loc的用法详解
2021/11/11 Python