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日

相关文章

  • vue axios基于常见业务场景的二次封装的实现

    为了更好地在Vue项目中使用axios库,我们可以通过二次封装的方式对axios进行自定义处理,使其更加符合我们项目的实际需求。下面是基于常见业务场景的二次封装步骤及示例说明: 一、安装axios和qs 在使用axios之前,我们需要安装axios和qs两个依赖。axios是一种基于Promise的HTTP客户端,可以用于浏览器和node.js。而qs是一个…

    Vue 2023年5月27日
    00
  • 解决vue select当前value没有更新到vue对象属性的问题

    我将为您详细讲解“解决Vue Select当前Value没有更新到Vue对象属性的问题”的完整攻略。 简介 在Vue开发中,我们通常会使用Vue Select组件来实现下拉选择框。但是在使用过程中,会发现Vue Select的value属性不能够及时更新到Vue对象中的属性,导致无法实现数据的双向绑定。本文将为大家提供解决这个问题的完整攻略。 解决方案 解决…

    Vue 2023年5月28日
    00
  • Vue新手指南之创建第一个vue-cli脚手架程序

    下面是完整的攻略。 准备工作 在开始创建vue-cli脚手架程序之前,需要确保已经安装了以下几个工具: Node.js:Vue框架基于Node.js运行,因此需要先安装Node.js(建议安装LTS版本) npm:Node.js自带的包管理工具,也是Vue框架所依赖的包管理工具。一般情况下,安装Node.js之后npm也会一并安装。 创建项目 第一步,打开命…

    Vue 2023年5月27日
    00
  • vue filter的四种用法小结

    下面是“Vue Filter的四种用法小结”的详细讲解。 什么是Vue Filter? Vue Filter是Vue.js中提供的一种数据过滤器(Data Filter)。它可以通过对数据进行转换和过滤来得到符合需求的数据。Filter可以在模板中使用,也可以在JavaScript代码中使用。 Vue Filter的四种用法 全局Filter 全局Filte…

    Vue 2023年5月28日
    00
  • antd vue 表格rowSelection选择框功能的使用方式

    关于“antd vue 表格rowSelection选择框功能的使用方式”,以下是详细的攻略: 1. 引入antd vue表格和rowSelection 首先,我们需要在代码中引入antd vue表格和rowSelection选择框,具体方法如下: <template> <a-table :columns="columns&quo…

    Vue 2023年5月29日
    00
  • 浅谈Vuex注入Vue生命周期的过程

    下面我将为大家详细讲解 “浅谈Vuex注入Vue生命周期的过程”的完整攻略。 什么是Vuex Vue.js 是一个轻量级的前端框架,但是当我们需要处理大量的异步请求,或者有大量的组件需要共享数据时,Vue.js 的数据响应式就会显得过于简单。这时我们就需要用到 Vuex。 Vuex 是一个专为 Vue.js 设计的应用状态管理库。它采用集中式存储管理应用的所…

    Vue 2023年5月29日
    00
  • 详解vue-cli3开发Chrome插件实践

    详解vue-cli3开发Chrome插件实践 前言 Vue-CLI 3是Vue.js发布的脚手架构建工具。它易于使用,且支持自定义配置,本文就是基于Vue-CLI 3来开发Chrome插件的。 环境 在开始之前,确保本地已经安装了Node.js和Vue-CLI 3,安装方法如下: 1.下载 Node.js:https://nodejs.org/en/down…

    Vue 2023年5月27日
    00
  • Vue的route-view子页面调用父页面的函数详解

    当我们在使用Vue的路由时,有些情况下我们需要在子页面中调用父页面中的函数,这种需求是非常常见的。本文将讲解如何在Vue中通过 this.$parent 和 $refs 这两种方法来实现子页面调用父页面函数的详解。 方法一:this.$parent this.$parent 可以获取到当前实例的父级,因此可以通过该属性来调用父级中的方法。 示例1:父子页面共…

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