前端知识-用户体验

news/2025/1/21 14:19:05/文章来源:https://www.cnblogs.com/khrushchefox/p/18683531

用户体验

性能优化

通过性能分析工具来观察页面各阶段的耗时和性能指标, 有针对性的进行优化

  • 加载时间太长

    • 资源体积过大: 减小产物大小, 减少传输量
      • 现代构建工具提供了压缩(compression), 树摇(tree shaking), 依赖外置(externals) 功能来减小产物大小
      • 同时提供代码拆分(code splitting), 按需加载(lazy loading) 等基本功能来减少传输量
      • 主流框架还支持服务端渲染(SSR), 部分基于React的应用框架还提供服务器组件(RSC). 流式渲染技术实现了分段渲染和传输,
      • 静态生成技术在构建阶段就生成静态页面, 用户直接访问, 省掉大量客户端脚本
    • 网络延迟高
      • HTTP/2协议提升网络并发传输效率;
      • CDN分发静态资源;
      • 在边缘计算节点部署无服务器应用;
      • 使用浏览器资源提示属性(预加载, 预取, DNS预解析, 预连接);
      • 对图片进行专项优化, 如使用现代图片格式webp和avif; 预渲染缩略图; 在标准img的loading, fetchpriority, decoding, srcset属性上进行优化等
    • 缺少缓存
      • 本地缓存: 利用HTTP协议的缓存头(Cache-Control, Last-Modified, ETag)来协商缓存的存储方式; 用浏览器存储API(LocalStorage, IndexedDB)来手动管理缓存; 利用Service Worker的缓存功能来最大程度缩短页面加载时间
      • 远端缓存: 在服务端或代理设备上配置内存缓存, 边缘缓存, 网关缓存等方案, 提高缓存利用率
    • 渲染受阻
      • 将非关键的JS文件标记为异步加载(async或defer), 来避免阻塞HTML解析
      • 采用Web Worker和WebAssembly技术, 将非常消耗计算资源的任务移出主线程和加速计算
      • 对于白屏时间较长的单页应用, 可在主文档全局变量中预写入数据, 来减少首屏代码中的接口请求
  • 交互过程不流畅

    • 海量的数据
      • 长列表展示: 分页和虚拟滚动选择性渲染
      • 大数据可视化: 数据抽样, 分片渲染, Canvas渲染, WebGL加速技术分摊图形计算压力; 离屏渲染技术在屏幕外的缓冲区中进行图像合成
    • 大量的动画
      • 在动画上使用带有硬件加速功能的CSS属性, 如transform, opacity, perspective
      • 使用浏览器提供的requestAnimationFrame函数, 或是开源动效方案, 如Lottie和Framer Motion
    • 频繁的交互
      • 使用防抖(Debounce)和节流(Throttle), UI框架提供的方案(v-show和keep-alive; useTransition和useDeferredValue)来实现更友好的交互反馈
  • 资源消耗过渡
    计算资源(CPU, 内存), 网络资源(宽带, 流量)等.

    • 不合理的资源加载:
      • 错误的构建设置
      • 未经优化的静态资源
      • 三方库滥用
      • 无效缓存
    • 代码质量问题:
      • 只监听不卸载的事件处理器
      • 长时间执行的同步代码
      • 频繁的网络请求

UI设计

  • 加载反馈
    • 首屏骨架: 首屏页面加载时, 优先渲染一个页面骨架屏, 以减少用户白屏等待时的焦虑感
    • 耗时操作: 当用户执行的动作耗时较长时, 展示一个Loading提示, 避免用户重复操作
    • 强弱依赖: 在尽可能保证并发的前提下, 分别处理接口, 对弱依赖进行降级, 以提升用户体验和系统可用性
  • 异常反馈
    系统遭遇异常时给予用户的反馈
    • 错误提示页面
    • 轻提示(黄条, toast)
    • 强提示(alert)
  • 兜底渲染
    当预期条件不满足时, 执行默认动作. 比如空数据
  • 响应式设计
    适应不同屏幕的大小
    • CSS的媒体查询功能, 为不同宽度高度的屏幕应用不同的样式, 还可以检测分辨率, 色彩深度, 触摸屏, 实现深色模式
      只能改变样式, 无法反过来影响JS逻辑
    • JS计算, 通过监听resize事件来感知屏幕宽度变化
  • 交互习惯适应

可访问性

  • 国际化业务: 提供多语言切换. Vue的vue-i18n, React的reactIntl, Angular的angular-translate
  • 视听残障人士: 适配屏幕阅读器, 利用色彩对比度检查工具确保颜色组合对色盲用户友好

个性化

  • 主题换肤
  • 记忆
    在不借助服务端保存数据的情况下, 通过本地存储记住用户上一次访问的状态
    比如页面滚动位置, 数据筛选条件, 复杂表单的草稿等
  • A/B测试
    针对不同的用户画像, 渲染不同的页面. 通过算法分析优化页面布局, 找到转化率最高的设计方案

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/872800.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React席哪个能优化

使用map + keyuseMemo,useCallbak组件Fragement异步组件lazy路由懒加载PureComponent,meno拓展时间分片,延迟加载SSR本作品采用 知识共享署名-非商业性使用 2.5 中国大陆许可协议进行许可。

【Unity游戏开发】基于xLua构建一个简单的3D游戏框架

一、xLua简介 xLua是基于Lua语言的开源插件,能够支持在Unity中嵌入Lua脚本(Lua脚本支持热更,适用于游戏的业务逻辑开发和维护) xLua源码地址 二、构建方法新建一个Unity项目(模板选择Universal 3D(URP))下载xLua源码,将Assets目录及其子目录下的全部文件拷贝到Unity项…

Windows RocketMQ 安装-截止当前最新版本(RocketMQ-5.3.1)图文教程

Windows RocketMQ 安装(图文教程) Windows RocketMQ 安装,截止当前最新版本(RocketMQ-5.3.1)图文教程,本文只是最简单的安装方法,旨在能快速使用,若需要更多的配置,则需要你自行查阅官方文档,或互联网搜索答案咯,哈哈哈哈 前言 本文中所有的路径,包括 JAVA 环境,都不…

2025年职场人常用的桌面日程管理软件有哪些?推荐这五款

在繁忙的职场生活中,一款高效的日程管理软件无疑是提升工作效率的秘密武器。 进入2025年,今天给大家介绍5款打工人常用的电脑桌面日程管理软件,它们各有优缺点,看看哪款是你需要的吧! 一、Win系统日历 作为Windows系统自带的日程管理工具,Win系统日历以其简洁易用著称。你…

大趋势下企业如何实现智能制造 | 珠海盈致

在当今全球制造业竞争日益激烈的背景下,智能制造已成为企业提升核心竞争力的关键路径。随着物联网、大数据、云计算、人工智能等技术的快速发展,智能制造正逐步从概念走向现实,为企业带来生产效率、产品质量、成本控制等方面的显著提升。那么,在大趋势下,企业如何实现智能…

【docker】如何运行没有Root权限的Docker?

以下文章来源于运维自习室 ,作者运维自习室 Rootless模式的目的是让Docker守护进程以非root用户身份运行。该方案以实验特性的方式在v19.03版本引入,并在v20.10版本成为正式功能。 实践 官方文档已经做了详细的介绍,这里仅仅做一下实践复现。 具体实践环境为: CentOS 7.2 d…

从0开始的ctf旅行之pwn篇

*最后更新时间:2025-01-21 10:17:43 星期二 * 零、前言 本篇文章是我个人从0开始打pwn的真实 坐牢 做题经验,包含了大量的参考链接和个人思考,绝大多数题目来自MoeCTF2024(https://ctf.xidian.edu.cn/) 本文默认你有以下基础:python3 会装虚拟机+基本的Linux操作 C语言一、…

识别两个表格文件,根据手机号进行匹配相同行并按照需要字段输出

python代码# -*- coding: utf-8 -*- # encoding:utf-8 from flask import Flask, render_template, request, send_file,jsonify import os, requests import pandas as pd from datetime import datetime, timedelta import time, json from log import logging import thread…

语音播报,套件多少异常的问题。(含源代码)

在工作中遇到一家工厂老板的需求:因为产品是有多个配件组成,在生产的时候,经常会多生产,少生产,在组装时,也会出现配件多少的问题,现就此问题设计一款程序。多出,少的,异常的,正常好,会开语音播报。现将全部代码给出以备。 import inspect import os import threadi…

EDMA3学习笔记1

1.1 EDMA3简介 EDMA3(Enhanced Direct Memory Access 3):增强型直接存储器访问的控制器。它是DSP中一个高级数据传输引擎,其结构适合数据的高速传输,可以在没有CPU主要参与的情况下,由控制器完成数据转移,主要服务外部内存(DDR)、片上内存(L2 SRAM)以及串口外设等。…