全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Vue-Router实现页面正在加载特效方法示例

前言

vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,适合用于构建单页面应用。vue的单页面应用是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来。传统的页面应用,是用一些超链接来实现页面切换和跳转的。在vue-router单页面应用中,则是路径之间的切换,也就是组件的切换。

如果你在使用 Vue.js 和 Vue-Router 开发单页面应用。因为每个页面都是一个 Vue 组件,你需要从服务器端请求数据,然后再让 Vue 引擎来渲染到页面上。

例如,这里有个用户个人资料的页面。

user.vue 文件如下:

<template>
 <div>
  <h2 v-text="user.name"></h2>
  <p v-text="user.description"></p>
 </div>
</template>
<script>
 export default{
  data(){
   return{
    user: {}
   }
  }
 }
</script>

在动画过渡期间向服务器请求数据,如下:

<script>
export default{
 data(){
  return{
   user: {}
  }
 },
 route: {
  data: function (transition) {
   this.getUserDetails(transition);
  }
 },
 methods: {
  getUserDetails(transition)
  {
   this.$http.get('/users/' + this.$route.params.userName)
    .then(function (response) {
     this.user = response.data;
     transition.next();
    });
  }
 }
}
</script>

这样,我们可以通过访问变量 $loadingRouteData。就可以实现隐藏所有的页面元素,显示某个正在加载的元素,比如某个 logo 等。

<div v-if="$loadingRouteData">
 <div class="white-widget grey-bg author-area">
 <div class="auth-info row">
 <div class="timeline-wrapper">
 <div class="timeline-item">
  <div class="animated-background">
   <div class="background-masker header-top"></div>
   <div class="background-masker header-left"></div>
   <div class="background-masker header-right"></div>
   <div class="background-masker header-bottom"></div>
   <div class="background-masker subheader-left"></div>
   <div class="background-masker subheader-right"></div>
   <div class="background-masker subheader-bottom"></div>
  </div>
 </div>
 </div>
 </div>
 </div>
</div>
<div v-if="!$loadingRouteData">
 <div>
  <h2 v-text="user.name"></h2>
  <p v-text="user.description"></p>
 </div>
</div>

比如,正在加载的样式代码如下:

.timeline-item {
 background: #fff;
 border-bottom: 1px solid #f2f2f2;
 padding: 25px;
 margin: 0 auto;
}

@keyframes placeHolderShimmer{
 0%{
 background-position: -468px 0
 }
 100%{
 background-position: 468px 0
 }
}

.animated-background {
 animation-duration: 1s;
 animation-fill-mode: forwards;
 animation-iteration-count: infinite;
 animation-name: placeHolderShimmer;
 animation-timing-function: linear;
 background: #f6f7f8;
 background: linear-gradient(to right, #eeeeee 8%, #dddddd 18%, #eeeeee 33%);
 background-size: 800px 104px;
 height: 40px;
 position: relative;
}

.background-masker {
 background: #fff;
 position: absolute;
}

/* Every thing below this is just positioning */

.background-masker.header-top,
.background-masker.header-bottom,
.background-masker.subheader-bottom {
 top: 0;
 left: 40px;
 right: 0;
 height: 10px;
}

.background-masker.header-left,
.background-masker.subheader-left,
.background-masker.header-right,
.background-masker.subheader-right {
 top: 10px;
 left: 40px;
 height: 8px;
 width: 10px;
}

.background-masker.header-bottom {
 top: 18px;
 height: 6px;
}

.background-masker.subheader-left,
.background-masker.subheader-right {
 top: 24px;
 height: 6px;
}


.background-masker.header-right,
.background-masker.subheader-right {
 width: auto;
 left: 300px;
 right: 0;
}

.background-masker.subheader-right {
 left: 230px;
}

.background-masker.subheader-bottom {
 top: 30px;
 height: 10px;
}

.background-masker.content-top,
.background-masker.content-second-line,
.background-masker.content-third-line,
.background-masker.content-second-end,
.background-masker.content-third-end,
.background-masker.content-first-end {
 top: 40px;
 left: 0;
 right: 0;
 height: 6px;
}

.background-masker.content-top {
 height:20px;
}

.background-masker.content-first-end,
.background-masker.content-second-end,
.background-masker.content-third-end{
 width: auto;
 left: 380px;
 right: 0;
 top: 60px;
 height: 8px;
}

.background-masker.content-second-line {
 top: 68px;
}

.background-masker.content-second-end {
 left: 420px;
 top: 74px;
}

.background-masker.content-third-line {
 top: 82px;
}

.background-masker.content-third-end {
 left: 300px;
 top: 88px;
}

这样,你就有了 Vue-Router 的正在加载时候的效果了。你可以把以上代码写进到一个单独的组件内,在你用的地方引用它就行。

最后

这仅是个关于 Vue-Router 加载的组件的简单教程,实际上可以在许多地方来进行改进,

VueJobs.com

如果你是一位对 Vue.js 感兴趣的前端工程师,可去这个网上浏览下,了解下国外对 Vue 开发者的要求。

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。


# vue  # router  # 加载  # 加载动画  # html  # vue2.0 循环遍历加载不同图片的方法  # 正在加载  # 都是  # 是个  # 如果你  # 好了  # 有个  # 你可以  # 你就  # 则是  # 你在  # 感兴趣  # 我们可以  # 就行  # 并将  # 跳转  # 这篇文章  # 你用  # 来实现  # 进到  # 就可以 


相关文章: 建站之星×万网:智能建站系统+自助建站平台一键生成  TestNG的testng.xml配置文件怎么写  高端网站建设与定制开发一站式解决方案 中企动力  广州商城建站系统开发成本与周期如何控制?  微课制作网站有哪些,微课网怎么进?  个人网站制作流程图片大全,个人网站如何注销?  Swift中swift中的switch 语句  IOS倒计时设置UIButton标题title的抖动问题  建站之星好吗?新手能否轻松上手建站?  如何快速重置建站主机并恢复默认配置?  实现虚拟支付需哪些建站技术支撑?  成都响应式网站开发,dw怎么把手机适应页面变成网页?  成都网站制作报价公司,成都工业用气开户费用?  智能起名网站制作软件有哪些,制作logo的软件?  保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?  如何彻底删除建站之星生成的Banner?  怎么将XML数据可视化 D3.js加载XML  建站之星客服服务时间及联系方式如何?  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  建站主机如何选?高性价比方案全解析  建站中国官网:模板定制+SEO优化+建站流程一站式指南  个人摄影网站制作流程,摄影爱好者都去什么网站?  盐城做公司网站,江苏电子版退休证办理流程?  杭州银行网站设计制作流程,杭州银行怎么开通认证方式?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  深圳网站制作平台,深圳市做网站好的公司有哪些?  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  如何通过多用户协作模板快速搭建高效企业网站?  公司网站设计制作厂家,怎么创建自己的一个网站?  制作表格网站有哪些,线上表格怎么弄?  如何通过PHP快速构建高效问答网站功能?  音响网站制作视频教程,隆霸音响官方网站?  建站之星Pro快速搭建教程:模板选择与功能配置指南  如何零基础在云服务器搭建WordPress站点?  如何在新浪SAE免费搭建个人博客?  制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?  网站制作公司,橙子建站是合法的吗?  如何在Golang中使用encoding/gob序列化对象_存储和传输数据  定制建站流程解析:需求评估与SEO优化功能开发指南  专业网站制作服务公司,有哪些网站可以免费发布招聘信息?  如何通过云梦建站系统实现SEO快速优化?  建站168自助建站系统:快速模板定制与SEO优化指南  北京建设网站制作公司,北京古代建筑博物馆预约官网?  如何选择高效稳定的ISP建站解决方案?  学校免费自助建站系统:智能生成+拖拽设计+多端适配  教学论文网站制作软件有哪些,写论文用什么软件 ?  如何在阿里云高效完成企业建站全流程?  公众号网站制作网页,微信公众号怎么制作?  定制建站模板如何实现SEO优化与智能系统配置?18字教程 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。