整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

面试遇到性能优化问题回答这 9 点,绝对加分!

哈喽, 今天给大家分享:前端性能优化——首页资源压缩 63%、白屏时间缩短 86%。

提升首屏的加载速度,是前端性能优化中「最重要」的环节,这里笔者梳理出一些常规且有效的首屏优化建议

「目标:」通过对比优化前后的性能变化,来验证方案的有效性,了解并掌握其原理

1、路由懒加载

SPA 项目,一个路由对应一个页面,如果不做处理,项目打包后,会把所有页面打包成一个文件,「当用户打开首页时,会一次性加载所有的资源」,造成首页加载很慢,降低用户体验

列一个实际项目的打包详情:

js性能优化有哪些方法_性能优化过程中遵守的原则_优化算法性能评价的基本内容

js性能优化有哪些方法_优化算法性能评价的基本内容_性能优化过程中遵守的原则

将路由全部改成懒加载

// 通过webpackChunkName设置分割后代码块的名字
const Home = () => import(/* webpackChunkName: "home" */ "@/views/home/index.vue");
const MetricGroup = () => import(/* webpackChunkName: "metricGroup" */ "@/views/metricGroup/index.vue");
…………
const routes = [
    {
       path"/",
       name"home",
       component: Home
    },
    {
       path"/metricGroup",
       name"metricGroup",
       component: MetricGroup
    },
    …………
 ]

重新打包后,首页资源拆分为 app.js 和 home.js,以及对应的 css 文件

优化算法性能评价的基本内容_js性能优化有哪些方法_性能优化过程中遵守的原则

优化算法性能评价的基本内容_性能优化过程中遵守的原则_js性能优化有哪些方法

通过路由懒加载,该项目的首页资源压缩约52%

路由懒加载的原理

懒加载前提的实现:ES6 的动态地加载模块——import()

调用 import() 之处,被作为分离的模块起点,意思是,被请求的模块和它引用的所有子模块,会分离到一个单独的 chunk 中

——摘自《webpack——模块方法》的 import\(\)小节

要实现懒加载,就得先将进行懒加载的子模块分离出来,打包成一个单独的文件

作用是 webpack 在打包的时候,对异步引入的库代码(lodash)进行代码分割时,设置代码块的名字。webpack 会将任何一个异步模块与相同的块名称组合到相同的异步块中

2、组件懒加载

除了路由的懒加载外,组件的懒加载在很多场景下也有重要的作用

举个 :

home 页面 和 about 页面,都引入了 弹框组件,该弹框不是一进入页面就加载,而是需要用户手动触发后才展示出来

home 页面示例: