前端性能优化

首屏速度

源码上

  1. 路由懒加载(动态导入) ()=>import('/path')

    • 不要再导入异步组件了,因为路由组件本身就是动态导入,不需要组件写出异步组件了
    • 当前跳到了某路由,其对应组件才会下载。
  2. 异步组件(按需导入) defineAsyncComponent

    • const Some = defineAsyncComponent(()=>import('/pat'))
      ...
      <Some v-if="isShow"></Some>
      

      首屏没有加载,用到时再向服务器发送请求

  3. 老版的库更新以支持tree-shaking,少用第三方库

  4. 服务器渲染SSR

  5. 服务器gZip压缩

  6. webpack打包压缩代码,禁止大图片转base64

网络上

静态资源放在cdn上
注意本地webpack要配置external 排除cdn引入的包

用户感知上

骨架屏/loading

prefetch 和 script

  • script加载

按需引入

切换需要等待

  • <link rel='prefetch' as='script' href='' />

预加载,切换无感

浪费带宽

prefetch 和 preload 不同:
preload是一种立即获取资源的策略,用来声明一个高优先级资源强制浏览器提前请求。
prefetch是一种在后台缓存资源的策略,(缓存的资源并不是当前页面需要的)以便在需要时立即使用。

渲染性能

  • vue
  1. keep-alive 缓存
  2. v-show