第 5 章:静态资源与图片优化

第 5 章:静态资源与图片优化

在 Web 开发中,图片加载优化 是影响性能和体验的关键因素。Next.js 提供了多个工具用于处理静态资源与图片,极大提升了开发效率和页面性能。


5.1 使用 public/ 文件夹

Next.js 项目根目录下的 public/ 文件夹可用于存放静态资源,如图片、字体、文档等。

📁 结构示例:

bash 复制代码
public/
├── logo.png
├── images/
│   └── banner.jpg
└── docs/
    └── resume.pdf

✅ 使用方式:

  • 访问地址:/logo.pnghttp://localhost:3000/logo.png
  • 引用图片(传统方式):
ini 复制代码
jsx
复制编辑
<img src="/images/banner.jpg" alt="横幅" />

⚠️ 注意:路径不需要加 public/ 前缀,直接从根路径 / 开始写。


5.2 使用 next/image 优化图片

Next.js 内置了 Image 组件,它能自动处理图片:

  • 懒加载(Lazy Loading)
  • 响应式尺寸
  • 自动格式转换(如 WebP)
  • CDN 支持
  • 提升 LCP 性能指标(对 SEO 有益)

✅ 安装依赖(如使用远程图片):

bash 复制代码
npm install sharp

本地开发可选;Vercel 部署自动支持。


5.3 示例:使用 Image 组件

jsx 复制代码
import Image from 'next/image';
import banner from '@/public/images/banner.jpg';

export default function Home() {
  return (
    <div>
      <h1>欢迎来到我的博客</h1>
      <Image
        src={banner}
        alt="博客横幅"
        width={800}
        height={400}
        priority={true}
      />
    </div>
  );
}

参数说明:

属性 说明
src 本地图片路径或远程图片 URL
alt 图片描述,推荐写,有助于 SEO
width / height 固定尺寸(必填或使用 fill
priority 提前加载图片,提升首屏性能
placeholder="blur" 模糊加载效果(仅支持本地图片)

5.4 响应式图片尺寸

可以使用 layout="responsive"fill + 父容器定位,自动适应不同屏幕:

jsx 复制代码
<Image
  src="/images/hero.jpg"
  alt="Hero 图"
  width={1200}
  height={600}
  layout="responsive"
/>

或使用 fill

jsx 复制代码
<div style={{ position: 'relative', width: '100%', height: '400px' }}>
  <Image src="/images/bg.jpg" alt="背景图" fill style={{ objectFit: 'cover' }} />
</div>

5.5 使用远程图片(如 CDN)

使用远程图片时,需要在 next.config.js 中配置允许的域名:

js 复制代码
// next.config.js
module.exports = {
  images: {
    domains: ['images.unsplash.com', 'cdn.example.com'],
  },
};
jsx 复制代码
<Image
  src="https://images.unsplash.com/photo-123"
  width={600}
  height={400}
  alt="远程图片"
/>

5.6 和传统 <img> 的区别

特性 <img> next/image
懒加载 ❌ 手动实现 ✅ 默认启用
响应式 ❌ 需 CSS 控制 ✅ 自适应布局
图片格式转换 ❌ 无 ✅ 支持自动转 WebP
CDN 优化 ✅ 支持
性能表现 普通 极优(提升 LCP)

🚀 建议:除了图标类小图,其他都使用 Image 替代 <img>


5.7 其他静态资源使用(字体、PDF、音频)

  • 字体文件(.woff/.ttf)放入 public/fonts/
  • PDF 文件:<a href="/docs/resume.pdf" download>下载简历</a>
  • 音频 / 视频资源也可放入 public/media/

✅ 小结

内容 方法 / 技巧
静态图片引用 放入 public/,通过 /xxx.jpg 访问
图片优化 使用 next/image,支持懒加载、自适应、WebP
远程图片 配置 next.config.js 中的 images.domains
响应式图片 使用 layout="responsive"fill 模式
传统 <img> 替代 尽量使用 Image 组件以提升性能
相关推荐
saber_andlibert1 天前
TCMalloc底层实现
java·前端·网络
逍遥德1 天前
如何学编程之01.理论篇.如何通过阅读代码来提高自己的编程能力?
前端·后端·程序人生·重构·软件构建·代码规范
冻感糕人~1 天前
【珍藏必备】ReAct框架实战指南:从零开始构建AI智能体,让大模型学会思考与行动
java·前端·人工智能·react.js·大模型·就业·大模型学习
程序员agions1 天前
2026年,“配置工程师“终于死绝了
前端·程序人生
alice--小文子1 天前
cursor-mcp工具使用
java·服务器·前端
晚霞的不甘1 天前
揭秘 CANN 内存管理:如何让大模型在小设备上“轻装上阵”?
前端·数据库·经验分享·flutter·3d
小迷糊的学习记录1 天前
0.1 + 0.2 不等于 0.3
前端·javascript·面试
梦帮科技1 天前
Node.js配置生成器CLI工具开发实战
前端·人工智能·windows·前端框架·node.js·json
VT.馒头1 天前
【力扣】2695. 包装数组
前端·javascript·算法·leetcode·职场和发展·typescript
css趣多多1 天前
一个UI内置组件el-scrollbar
前端·javascript·vue.js