Next.js 图像优化

Next.js 图像优化

对于图像优化,NextJS 提供了一个图像组件,它是 HTML 元素 的扩展。NextJS 提供了一些内置的优化来实现良好的核心网页指标。

首先让我们了解下什么是核心网页指标(Core Web Vitals):核心网页指标是一组标准化的度量指标,用于衡量网页上的用户体验。这些指标评分了页面内容加载的速度。

有三种核心网页指标:

  1. 最大内容绘制时间(Largest Contentful Paint,LCP)
  2. 首次输入延迟(First Input Delay,FID)
  3. 累积布局偏移(Cumulative Layout Shift,CLS)

1. 最大内容绘制时间(Largest Contentful Paint,LCP): 它用秒表示,衡量了网页主要内容加载的速度。基本上,它衡量了页面加载到图像渲染完成的时间。LCP 值越低,结果越好。我们可以通过优化渲染路径、CSS 和图像来改善 LCP。

Next.js 图像优化

2. 首次输入延迟(FID): 它衡量了从你点击链接到它们响应的时间。我们可以通过减少JavaScript执行时间和第三方代码的影响来改善FID。

Next.js 图像优化

3. Cumulative Layout Shift (CLS): CLS用于衡量一个网页移动的次数,基本上,它用于计算一个网页的视觉稳定性。我们可以通过在图像上包含 width和height 属性来改善CLS。

Next.js 图像优化

NextJS提供的一些内置图像优化API(next/image)包括:

  1. 提升用户体验 : 延迟或立即加载图像,加快网站加载时间性能。
  2. 良好的开发者体验 : 提供缓存和加载器等选项。
  3. 视觉稳定性 : 自动预防内容移位。
  4. 优化LCP : NextJS为图像提供优先级属性。
  5. 响应式设计 : 如果在布局中设置了响应式属性,NextJS会自动处理。

NextJS中的Image组件: <image/>类似于HTML中的 < img>元素,都接受src和alt属性。

运行NextJS及其Image组件的步骤:

步骤1: 在您的计算机上安装NodeJS。要了解如何安装NodeJS,请点击这里。

步骤2: 创建一个新文件并将目录更改为所创建的文件。在终端中使用以下命令:

cd file_name

步骤3: 使用以下命令创建下一个应用程序:

npx create-next-app app_name 

步骤4:项目结构 应该长这样:

Next.js 图像优化

步骤5: 在pages/index.js中导入图像组件

import Image from "next/image";

图像优化:

1. 图像加载: 我们可以指定图像的加载行为,当您向下滚动时,下一个图像会自动加载。有两种加载方式:

  1. eager: 立即加载图像。
  2. lazy: 默认为图像组件。加载直到图像可见。

示例:

import Image from "next/image";
 
const index = () => {
    return (
        <>
            <h1 style={{ color: 'green' }}>GeeksForGeeks</h1>
            <Image src="/gfgg.png" alt="Loading"
                width={500}
                height={550}
                loading="eager"
            />
        </>
    );
};
export default index;

注意: 急切模式不适合优化,请使用优先级属性。

运行应用的步骤: 使用以下命令运行你的Next应用:

npm run dev

输出:

Next.js 图像优化

2. Priority prop: 有时候我们需要使用 priority = {true} 提前预加载关键图像,从而提高LCP。

示例:

//Priority prop
import Image from "next/image";
 
const index = () => {
    return (
        <>
            <h1 style={{ color: 'green' }}>GeeksForGeeks</h1>
            <Image src="/gfgg.png" alt="Loading"
                width={500}
                height={550}
                priority={true}
            />
        </>
    );
};
export default index;

3. 图片尺寸: 如我们所见,为了改善CLS,我们需要包括图片的宽度和高度。这样可以让浏览器在加载图片之前保留空间。如果您不知道图片的尺寸,您可以使用 layout = “fill”。

layout = “fill” 响应其父元素的尺寸

布局提供了四个值:

  1. fill
  2. intrinsic(固有)
  3. responsive(响应式)
  4. fixed(固定)

示例:

import Image from "next/image";
 
const index = () => {
    return (
        <>
            <h1 style={{ color: 'green' }}>GeeksForGeeks</h1>
            <Image src="/gfgg.png" alt="Loading"
                layout="fill"
            />
        </>
    );
};
export default index;

输出:

Next.js 图像优化

4. ObjectFit属性:layout = “fill” 一起使用。它设置图像在容器中如何调整大小以适应。

Objectfit提供四个值:

  1. contain
  2. cover
  3. fill
  4. none

示例:

//ObjectFit
import Image from "next/image";
 
const index = () => {
    return (
        <>
            <h1 style={{ color: 'green' }}>GeeksForGeeks</h1>
            <Image src="/gfgg.png" alt="Loading"
 
                layout="fill"
                objectFit="contain"
 
            />
        </>
    );
};
export default index;

输出:

Next.js 图像优化

5. Placeholder prop: 它用作在图片加载时的替代图像。它也被称为临时替代或加载指示器。占位符表示正在加载图像。

Placeholder提供两个值:

  1. blur

示例:

//Placeholder
import Image from "next/image";
 
const index = () => {
    return (
        <>
            <h1 style={{ color: 'green' }}>GeeksForGeeks</h1>
            <Image src="/gfgg.png" alt="Loading"
                width={600}
                height={450}
 
                placeholder="blur"
                blurDataURL="data:image/png;base64,[IMAGE_CODE_FROM_PNG_PIXEL]"
 
            />
        </>
    );
};
export default index;

输出:

Next.js 图像优化

6. 图片质量设置: 通过提供 1100 之间的数值,我们可以定义图片的质量。默认值为75。

Next.js 图像优化

我们可以通过使用以下命令来调整quality的值:

quality="100"

示例:

//Quality of the image
import Image from "next/image";
 
const index = () => {
    return (
        <>
            <h1 style={{ color: 'green' }}>GeeksForGeeks</h1>
            <Image src="/gfgg.png" alt="Loading"
                width={500}
                height={550}
                quality="100"
            />
        </>
    );
};
export default index;

输出:

Next.js 图像优化

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程