Next.js 图片、字体与第三方脚本
这块经常被拆成三个零散话题来看:
next/imagenext/fontnext/script
但放到一起看更容易理解。它们其实都在做同一类事:
- 优化首屏资源加载
- 减少布局抖动
- 控制第三方资源对性能的影响
- 让资源加载策略更明确
next/image 解决什么问题
官方的 <Image /> 不是普通 <img> 的简单封装,它主要解决:
- 自动尺寸优化
- 现代格式输出
- 原生懒加载
- 避免布局偏移
- 远程图片安全白名单控制
import Image from 'next/image';
export default function Avatar() {
return (
<Image
src="/profile.png"
alt="Profile"
width={500}
height={500}
/>
);
}
为什么它比 <img> 更值得默认用
最直接的原因有三个:
- 宽高信息明确,能避免 CLS
- 浏览器不会一次性把所有图片都抢先拉下来
- 可以根据设备和视口输出更合适的资源尺寸
本地图片和远程图片的区别
本地图片
放在项目内,Next 更容易推断资源。