Skip to content

性能优化

图片加载

图片通常是体积最大的资源。

体积优化

图片转换格式 WebP ,图片压缩,减少体积。

加载优化

原生懒加载,Intersection Observer 懒加载。

html
<img loading="lazy" />

<img data-src="xxx.jpg" />
js
const observer = new IntersectionObserver((entries) => {
  entries.forEach((entry) => {
    if (entry.isIntersecting) {
      const img = entry.target
      img.src = img.dataset.src
      observer.unobserve(img)
    }
  })
})

document.querySelectorAll('img[data-src]').forEach((img) => observer.observe(img))

响应式优化

小屏幕加载小图,大屏幕加载大图,通过 srcset + sizes 实现。

html
<template>
  <!-- 误区:无论是否显示,图片都会加载 -->
  <img src="/mb.jpg" class="block lg:hidden" />
  <img src="/pc.jpg" class="hidden lg:block" />
</template>

实际应用

NuxtImg

Skeleton

代码分割

SPA 应用路由懒加载,箭头函数动态导入页面组件。

组件或第三方库尽量按需导入。

SSG

防抖节流

事件代理

内存释放

组件销毁时清理事件监听和定时器,

大数组大对象,闭包函数用完后手动解除引用,

首屏加载

  • 路由懒加载
  • 图片优化,懒加载
  • ssr/ssg