首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
第 11 章 使用动画
11.1 使用CSS 3创建动画
11.1.1 transition过渡动画
11.1.2 keyframes动画
11.2 使用JavaScript的方式实现动画效果
11.3 Vue过渡动画
11.3.1 定义过渡动画
11.3.2 设置动画过程中的监听回调
11.3.3 多个组件的过渡动画
11.3.4 列表过渡动画
11.4 实战:优化用户列表页面
第 12 章 Vue CLI工具的使用
12.1 Vue CLI工具入门
12.1.1 Vue CLI工具的安装
12.1.2 快速创建Vue项目
12.2 Vue CLI项目模板工程
12.2.1 模板工程的目录结构
12.2.2 运行Vue项目工程
12.2.3 vue-class-component库简介
12.3 在项目中使用依赖
12.4 工程构建
12.5 新一代前端构建工具Vite
12.5.1 Vite与Vue CLI
12.5.2 体验Vite构建工具
第 13 章 Element Plus基于Vue 3的UI组件库
13.1 Element Plus入门
13.1.1 Element Plus的安装与使用
13.1.2 按钮组件
13.1.3 标签组件
13.1.4 空态图与加载占位图组件
13.1.5 图片与头像组件
13.2 表单类组件
13.2.1 单选框与多选框
13.2.2 标准输入框组件
13.2.3 带推荐列表的输入框组件
13.2.4 数字输入框
13.2.5 选择列表
13.2.6 多级列表组件
13.3 开关与滑块组件
13.3.1 开关组件
13.3.2 滑块组件
13.4 选择器组件
13.4.1 时间选择器
13.4.2 日期选择器
13.4.3 颜色选择器
13.5 提示类组件
13.5.1 警告组件
13.5.2 消息提示
13.5.3 通知组件
13.6 数据承载相关组件
13.6.1 表格组件
13.6.2 导航组件
13.6.3 标签页组件
13.6.4 抽屉组件
13.6.5 布局容器组件
13.7 实战:教务系统学生表
当前位置:
首页>>
技术小册>>
TypeScript和Vue从入门到精通(四)
小册名称:TypeScript和Vue从入门到精通(四)
### 13.1.4 空态图与加载占位图组件 在开发Vue.js应用时,尤其是结合TypeScript进行开发时,良好的用户体验不仅仅体现在功能的完善上,还体现在对细节的把控上。其中,空态图(Empty State)与加载占位图(Loading Placeholder)的设计与应用,就是提升用户体验不可或缺的一环。这些组件能够在数据尚未加载、加载失败或数据为空时,向用户展示友好的提示信息或视觉元素,避免用户面对空白的界面而感到困惑或不满。 #### 13.1.4.1 理解空态图与加载占位图的重要性 **空态图**:当数据集合为空时(如列表为空、搜索结果无匹配项等),空态图用于向用户解释当前状态的原因,并提供可能的下一步操作建议。它不仅能减少用户的困惑,还能引导用户进行有意义的交互,提升应用的可用性和用户满意度。 **加载占位图**:在数据加载过程中,加载占位图(也称为加载指示器)用于告知用户系统正在工作,即将显示数据。这有助于缓解用户的等待焦虑,提升应用的响应性和流畅度。良好的加载占位图设计应简洁明了,且与应用的整体风格保持一致。 #### 13.1.4.2 设计原则 - **一致性**:无论是空态图还是加载占位图,都应与应用的UI/UX设计保持一致,包括颜色、字体、图标等。 - **清晰性**:信息传达应直接明了,避免使用模糊或容易误解的语言。 - **引导性**:空态图应包含引导用户进行下一步操作的建议或链接。 - **可定制性**:组件应支持自定义内容,以适应不同场景下的需求。 - **性能优化**:加载占位图应尽可能轻量,避免在加载过程中消耗过多资源。 #### 13.1.4.3 实现空态图组件 在Vue.js中,我们可以使用TypeScript来定义一个可复用的空态图组件。以下是一个简单的实现示例: ```vue <template> <div class="empty-state" v-if="isEmpty"> <img :src="imageSrc" alt="Empty State" class="empty-image" /> <p>{{ message }}</p> <button @click="onActionButtonClick" v-if="actionButton">{{ actionButtonText }}</button> </div> </template> <script lang="ts"> import Vue from 'vue'; export default Vue.extend({ name: 'EmptyState', props: { isEmpty: { type: Boolean, required: true }, imageSrc: { type: String, default: '' }, message: { type: String, required: true }, actionButton: { type: Boolean, default: false }, actionButtonText: { type: String, default: 'Try Again' } }, methods: { onActionButtonClick() { this.$emit('action-clicked'); } } }); </script> <style scoped> .empty-state { display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100%; text-align: center; } .empty-image { width: 100px; height: 100px; margin-bottom: 20px; } </style> ``` 在这个组件中,我们使用了`props`来接收外部传入的参数,包括是否显示空态图(`isEmpty`)、图片源(`imageSrc`)、提示信息(`message`)、是否显示操作按钮(`actionButton`)以及操作按钮的文本(`actionButtonText`)。当`isEmpty`为`true`时,组件会显示相应的空态图、提示信息和(可选的)操作按钮。 #### 13.1.4.4 实现加载占位图组件 加载占位图组件的实现相对简单,主要依赖于CSS动画或SVG动画来创建动态的加载效果。以下是一个基于CSS动画的简单实现: ```vue <template> <div class="loading-placeholder" v-if="isLoading"> <div class="loader"></div> </div> </template> <script lang="ts"> import Vue from 'vue'; export default Vue.extend({ name: 'LoadingPlaceholder', props: { isLoading: { type: Boolean, required: true } } }); </script> <style scoped> .loading-placeholder { display: flex; justify-content: center; align-items: center; height: 100%; } .loader { border: 16px solid #f3f3f3; /* Light grey */ border-top: 16px solid #3498db; /* Blue */ border-radius: 50%; width: 120px; height: 120px; animation: spin 2s linear infinite; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } </style> ``` 这个组件使用了一个简单的CSS动画来创建一个旋转的加载指示器。当`isLoading`为`true`时,组件会显示这个加载占位图。 #### 13.1.4.5 组件的复用与扩展 在实际项目中,你可能需要根据不同的场景定制空态图和加载占位图。为了提高代码的可复用性和可维护性,你可以将这些组件封装成库,并在项目中通过npm或yarn进行安装和管理。此外,你还可以利用Vue的插槽(slot)功能,允许外部传入自定义内容,进一步增加组件的灵活性和扩展性。 #### 13.1.4.6 结论 空态图与加载占位图组件在提升Vue.js应用用户体验方面扮演着重要角色。通过合理的设计和实现,这些组件可以有效地减少用户的等待焦虑,提高应用的可用性和用户满意度。在TypeScript的加持下,我们可以利用类型系统和模块化特性,编写出更加健壮、易于维护的组件代码。希望本章内容能为你在Vue.js项目中实现高质量的空态图和加载占位图组件提供有益的参考。
上一篇:
13.1.3 标签组件
下一篇:
13.1.5 图片与头像组件
该分类下的相关小册推荐:
移动端开发指南
Vue.js从入门到精通(一)
Vue原理与源码解析
TypeScript和Vue从入门到精通(五)
vue项目构建基础入门与实战
Vue面试指南
Vue3技术解密
vuejs组件实例与底层原理精讲
VUE组件基础与实战
TypeScript和Vue从入门到精通(三)
Vue源码完全解析
TypeScript和Vue从入门到精通(二)