Vue页面骨架屏的实现方法

当用户访问页面时,如果页面加载速度很慢,很容易造成用户的不耐烦和流失,导致用户体验降低。为了避免这种情况的发生,可以使用 skeleton screen(骨架屏)技术,即在页面加载过程中,先呈现出一个简单的页面骨架,等到页面加载完成后,再把数据填充到页面中,使得用户不会感到过长的等待时间。

下面是实现Vue页面骨架屏的具体步骤:

1. 安装 vue-content-loader

骨架屏是一种基于 SVG 的图形动画,只需要安装 vue-content-loader 就可以在 Vue 中使用。

npm install --save vue-content-loader

2. 编写骨架屏组件

在 Vue 组件中,设置一个 data 属性,用来判断数据是否加载完成,然后分别编写两段 HTML : 骨架屏部分和数据部分,通过v-if来判断是否需要显示骨架屏。

<template>
  <div class="container">
    <!-- 骨架屏部分 -->
    <vue-content-loader v-if="!isLoaded" :speed="2" :width="300" :height="20">
      <rect x="10" y="8" rx="5" ry="5" width="85" height="10" />
      <rect x="100" y="8" rx="5" ry="5" width="85" height="10" />
      <rect x="190" y="8" rx="5" ry="5" width="85" height="10" />
    </vue-content-loader>
    <!-- 数据部分 -->
    <ul v-else>
      <li v-for="(item, index) in list" :key="index">{{ item }}</li>
    </ul>
  </div>
</template>

<script>
import VueContentLoader from 'vue-content-loader'

export default {
  data () {
    return {
      list: [],
      isLoaded: false // 判断数据是否加载完成
    }
  },
  mounted () {
    // 模拟异步请求数据
    setTimeout(() => {
      this.list = ['aaa', 'bbb', 'ccc']
      this.isLoaded = true // 数据加载完成
    }, 2000)
  },
  components: {
    VueContentLoader
  }
}
</script>

3. 针对不同场景进行优化

实际项目中,可能遇到图片、按钮等复杂的组件,因此需要使用不同的骨架屏组件来设置相应的骨架屏,以达到更优的骨架屏效果。

3.1 骨架块组件

<template>
  <vue-content-loader :width="150" :height="25">
    <!-- 标题 -->
    <rect x="0" y="0" rx="5" ry="5" width="150" height="15" />
    <!-- 内容 -->
    <rect x="0" y="18" rx="5" ry="5" width="150" height="7" />
  </vue-content-loader>
</template>

3.2 骨架条组件

<template>
  <vue-content-loader :speed="2" :width="300" :height="100">
    <!-- 标题 -->
    <rect x="0" y="0" rx="5" ry="5" width="300" height="17" />
    <!-- 状态 -->
    <rect x="0" y="30" rx="5" ry="5" width="80" height="10" />
    <!-- 内容 -->
    <rect x="0" y="50" rx="5" ry="5" width="300" height="35" />
  </vue-content-loader>
</template>

以上就是Vue页面骨架屏的实现方法,根据具体的需求,可以对骨架屏进行不同的调整,从而达到更佳的用户体验效果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue页面骨架屏的实现方法 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • vuex实现及简略解析(小结)

    Vuex实现及简略解析 Vuex是一个专为Vue.js设计的状态管理库,他采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。在大型的Vue.js应用程序中,多个组件之间共享同一状态,直接进行状态传递会比较麻烦。在这种情况下,我们可以使用Vuex。本文详细介绍了Vuex的实现和简略的解析。 Vuex简单介绍 Vuex提供…

    Vue 2023年5月28日
    00
  • Vue2 响应式系统之异步队列

    当我们修改 Vue 实例数据时,Vue 会根据监听的数据属性触发响应式更新。Vue 2.x 的响应式系统包含依赖追踪和异步队列两个部分,其中异步队列主要负责缓存数据变更并批量更新 DOM,以最小代价更新视图。具体来说,异步队列可以将同一事件循环中的数据变更缓存起来,避免了对于同一数据进行多次 DOM 更新,降低了性能消耗。而且通过微任务让 DOM 更新在下一…

    Vue 2023年5月29日
    00
  • vue 数组添加数据方式

    下面是“Vue 数组添加数据方式”完整攻略。 前置知识: 在了解Vue中的数组添加数据方式之前,我们需要了解Vue中的响应式原理。Vue在渲染页面时,会做一个数据变更监听,当数据发生变化时,它会尝试重新渲染页面。数组在JS中是通过push和pop等方法改变数据,但这些方法不会触发数组的变更监听。因为这个原因,Vue提供了一些可以触发变更监听的数组方法。 通过…

    Vue 2023年5月27日
    00
  • Vue 实现双向绑定的四种方法

    当我们用Vue框架去编写一个前端应用时,往往需要实现双向绑定,这是Vue框架最重要的特性之一。Vue实现双向绑定的方式有很多,下面将详细讲解四种方法的具体实现过程和示例。 1. Object.defineProperty Object.defineProperty是一种实现双向绑定的最基础的方法,这种方法适用于所有支持ECMAScript5的浏览器。 实现双…

    Vue 2023年5月28日
    00
  • VUE重点问题总结

    VUE重点问题总结攻略 1. Vue组件之间通信方式 在Vue组件开发中,组件之间通信是一个重要的问题。Vue提供了多种组件之间通信的方式,包括props、$parent/$children、$emit/$on、$refs等,下面分别进行详细说明。 Props 使用props向子组件传递数据是最常用的方式。父组件通过props向子组件传递数据,子组件通过pr…

    Vue 2023年5月28日
    00
  • 通过vue-cli3构建一个SSR应用程序的方法

    构建一个SSR应用程序的过程相比较普通的SPA应用程序增加了许多复杂操作,但是通过Vue-cli3进行构建,可以简化这个过程。以下是构建一个SSR应用程序的详细步骤: 安装Vue-cli3 如果尚未安装Vue-cli3,请使用以下命令安装: npm install -g @vue/cli 创建一个Vue项目 vue create my-ssr-app cd …

    Vue 2023年5月27日
    00
  • Vue中localStorage的用法和监听localStorage值的变化

    关于Vue中localStorage的用法和监听localStorage值的变化,以下是完整内容: 1. Vue中localStorage的用法 LocalStorage是浏览器提供的一种本地存储方式,数据可以永久的保存在浏览器本地,下次访问此网页还能取回数据。使用localStorage需要使用到原生的JavaScript语法。在 Vue 中使用 loca…

    Vue 2023年5月28日
    00
  • Vue.component的属性说明

    下面详细讲解一下Vue中的组件属性说明。 Vue.component的属性说明 在Vue中,组件的一些常用属性可以用Vue.component进行定义。下面是Vue.component的主要属性说明: props props属性用于接收父组件传递过来的数据,在组件内部通过 this.$props 访问。它是一个数组或对象,数组中的元素可以是字符串或对象。如果…

    Vue 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部