首页 > 其他分享 >实战剖析-vue项目首屏加载时长优化

实战剖析-vue项目首屏加载时长优化

时间:2024-04-22 10:59:05浏览次数:23  
标签:vue 页面 js 引入 首屏 打包 加载

 

首屏速度是用户体验的最关键一环,而首屏速度最大的决定性因素就是资源的加载速度,资源加载速度等于资源大小 + 网速,老的前端项目随着不断增长,代码可能会变得混乱,冗余难以理解,不断的做加法,久而久之,前端性能上就会受到影响,相信大家在工作当中一定遇到,页面加载时间慢,响应时间长等问题,本文将以具体项目为例(vue 2.51.7 webpack:4.23.1),一点一点分析,通过实战的角度,介绍如何对Vue项目的首屏加载时间进行优化。

首先我们分析一下页面加载时间的构成:

(1)资源加载;

(2)代码执行;

(3)页面绘制;

 


 

打开chrome开发者模式面板,为了更好的还原用户的使用场景,我在设置-节流配置中添加模拟5G的性能分析选项,对网络状况做最大限度还原,开始录制页面加载过程,

通过性能分析工具,我们就能看到一共有哪些执行,花了多长时间,通过查看网络面板,可以查看到每一个资源的加载时间,脚本执行,页面渲染和绘制时间,可以看出等待加载资源过大,执行脚本时长是占据白屏时间的首要因素。也可利用window.performance,以数据化的形式查看页面的各种时间,甚至可以把这些时间指标通过接口的形式发送给服务端,可以监控我们的项目在用户的终端设备中的表现;

window.onload = function(){
    axios({
        url: "xxx",
        data: window.perfoformace
    })
}

 


 


 

问题找到了,就解决它

针对资源加载太慢的问题我先寻找大佬赏赐了一些思路:

1、找到是哪个文件过大导致,是否可以拆包;2、如果不是马上需要的资源,可以异步加载;3、利用tree-shaking,尽量使用按需引入;4、定期实效数据可以缓存在cookies/localstorage中;5、进行gzip压缩;6、利用webpack / vite对代码进行压缩;

作为一只资深笨鸟,对大佬的思路领悟只有一二成,用最笨的方法,一条一条排查

标签:vue,页面,js,引入,首屏,打包,加载
From: https://www.cnblogs.com/Jcloud/p/18150188

相关文章

  • vue3 快速入门系列 —— 其他API
    其他API前面我们已经学习了vue3的一些基础知识,本篇将继续讲解一些常用的其他api,以及较完整的分析vue2和vue3的改变。浅层响应式数据shallowRefshallow中文:“浅层的”shallowRef:浅的ref()。先用ref写个例子:<!--ChildA.vue--><template><p>#组件A</p>......
  • vue 商品sku,笛卡尔算法,商品添加。动态生成table,table添加值后 再生成的table 不改变t
     <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>快速入门</title><!--引入组件库--><linkrel="stylesheet"href="https://un......
  • vue v-for中key的作用,使用index作为key会怎么样?
    原理其主要的目的就是优化性能。vue在更新dom时会比较key值相同的元素内容是否发生改变,如果不变则不更新页面,这样可以使得尽可能减少页面的更新,提高性能。假如我渲染3个元素,不设置key值,即默认策略应该是标识为index,即0,1,2。假如我在第一个元素后加一个元素,则实际上原先的bc......
  • JVM-part1-类加载子系统组成,及流程
    类加载子系统的作用:将所需要的Class文件进行加载,加载流程存在一下几个阶段:第一个阶段为加载阶段(Loading阶段):这个阶段是将引导类加载器和非引导类加载器需要加载的Class文件进行加载。具体来说:引导类加载器(BootStrapClassLoader):这个加载器的作用是将java_home/jre/lib下的Cl......
  • vue v-model 双向绑定
    回顾从vue2到vue3v-model双向绑定的写法变化场景v-model双向绑定,用于处理表单输入绑定,类似于react中的受控组件。//React受控组件functionApp(){const[text,setText]=useState("");return(<><h3>{text}</h3><inputvalue=......
  • 前端【TS】02-typescript【基础】【搭建Vite+Vue3+TS项目】【为ref标注类型】
    前置基于Vite创建Vue3+TS环境vite官方文档:https://cn.vitejs.dev/guide/vite除了支持基础阶段的纯TS环境之外,还支持Vue+TS开发环境的快速创建,命令如下:1npmcreatevite@latestvue-ts-project----templatevue-ts23//说明:41.npmcreatevite@lates......
  • 基于SpringBoot+Vue毕业生信息招聘平台系统
    需求分析3.1技术可行性:技术背景毕业生信息招聘平台是在Windows操作系统中进行开发运用的,而且目前PC机的各项性能已经可以胜任普通网站的web服务器。系统开发所使用的技术也都是自身所具有的,也是当下广泛应用的技术之一。系统的开发环境和配置都是可以自行安装的,系统使用Java开......
  • vue中ts引入组件,无法找到模块xxx的声明文件。xxx隐式拥有 "any" 类型。
    原因说明简单来说就是ts不认识.vue这个类型,需要定义声明。我刚学ts不是很懂为什么vite官方内写了那么多类型声明就是不写.vue。解决方法在项目根目录下找到env.d.ts文件,这个文件定义类型声明,简单地说就是让ts认识各种类型,尤其是文件。那么解决方法显而易见,我们自定义vue的......
  • Java 安全基础之 Java 反射机制和 ClassLoader 类加载机制
    目录Java反射机制反射java.lang.RuntimeClassLoader类加载机制URLClassLoaderJava反射机制Java反射(Reflection)是Java非常重要的动态特性。在运行状态中,通过Java的反射机制,我们能够判断一个对象所属的类。了解任意一个类的所有属性和方法。能够调用任意一个对象的任意方......
  • vue3 优化ai生成的手写签名
    下面是baiduai生成的代码:在Vue3中实现手写签名功能,可以使用canvas元素来创建一个绘图区域,并监听鼠标事件来实现签名的记录。以下是一个简单的例子:vue<template><div><canvasref="signatureCanvas"@mousedown="startSigning"@mousemove="updat......